home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / demobook / coloredit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  53.3 KB  |  1,913 lines

  1. /*
  2.  * Copyright 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17.  
  18. /*******************************************************************************
  19.     coloredit.c
  20. *******************************************************************************/
  21.  
  22. #include <stdio.h>
  23. #include <Xm/Xm.h>
  24. #include <Xm/MenuShell.h>
  25. #include "UxXt.h"
  26.  
  27. #include <Xm/PushB.h>
  28. #include <Xm/TextF.h>
  29. #include <Xm/LabelG.h>
  30. #include <Xm/DrawingA.h>
  31. #include <Xm/ToggleB.h>
  32. #include <Xm/RowColumn.h>
  33. #include <Xm/Scale.h>
  34. #include <Xm/Label.h>
  35. #include <Xm/Frame.h>
  36. #include <Xm/Form.h>
  37. #include <Xm/DialogS.h>
  38.  
  39. /*******************************************************************************
  40.     Includes, Defines, and Global variables from the Declarations Editor:
  41. *******************************************************************************/
  42.  
  43. /*-------------------------------------------------------------
  44.  * Visual Edge Software Limited.   December 1990.
  45.  *
  46.  * coloredit - interactive color editor for the color view.
  47.  *------------------------------------------------------------*/
  48. #include <X11/Xutil.h>
  49. #include <X11/Xos.h>
  50. #include <Xm/Protocols.h>
  51. #include <Xm/AtomMgr.h>
  52.  
  53. #include "exinterfmotif.h"
  54. #include "exglobals.h"
  55.  
  56. /* sources of apply_color calls */ 
  57. #define CE_INIT     0 
  58. #define CE_SPACE_TGL     1 
  59. #define CE_HLS_SCALE    2 
  60. #define CE_RGB_SCALE    3 
  61. #define CE_TEXT        4 
  62. static void apply_color ();
  63. static void rgb_to_hls ();
  64. static void hls_to_rgb ();
  65. static void setup_pixels (); 
  66. static void put_scale_background ();
  67. void copy_color ();
  68. /* Global color variables (updated by view sometimes)
  69.  */
  70. XColor * init_color;
  71. XColor * edit_color;
  72. #define N_CUES 11
  73. extern XColor cue_colors[N_CUES];
  74. extern Colormap sys_cmap;
  75.  
  76. /*******************************************************************************
  77.     The definition of the context structure:
  78.     If you create multiple instances of your interface, the context
  79.     structure ensures that your callbacks use the variables for the
  80.     correct instance.
  81.  
  82.     For each swidget in the interface, each argument to the Interface
  83.     function, and each variable in the Instance Specific section of the
  84.     Declarations Editor, there is an entry in the context structure.
  85.     and a #define.  The #define makes the variable name refer to the
  86.     corresponding entry in the context structure.
  87. *******************************************************************************/
  88.  
  89. typedef    struct
  90. {
  91.     Widget    Uxfull_fm;
  92.     Widget    Uxtop_box;
  93.     Widget    Uxtop_lbl;
  94.     Widget    Uxmain_box;
  95.     Widget    Uxwork_fm;
  96.     Widget    Uxhue_fm;
  97.     Widget    Uxhue_sc;
  98.     Widget    Uxhue_red_min;
  99.     Widget    Uxhue_yellow;
  100.     Widget    Uxhue_green;
  101.     Widget    Uxhue_cyan;
  102.     Widget    Uxhue_blue;
  103.     Widget    Uxhue_magenta;
  104.     Widget    Uxhue_red_max;
  105.     Widget    Uxspace_radio;
  106.     Widget    Uxrgb_tgl;
  107.     Widget    Uxcmy_tgl;
  108.     Widget    Uxlightness_fm;
  109.     Widget    Uxlightness_min_box;
  110.     Widget    Uxlightness_max_btn;
  111.     Widget    Uxlightness_sc;
  112.     Widget    Uxsaturation_fm;
  113.     Widget    Uxsaturation_min_box;
  114.     Widget    Uxsaturation_max_btn;
  115.     Widget    Uxsaturation_sc;
  116.     Widget    Uxblue_fm;
  117.     Widget    Uxblue_max_btn;
  118.     Widget    Uxblue_min_box;
  119.     Widget    Uxblue_sc;
  120.     Widget    Uxgreen_fm;
  121.     Widget    Uxgreen_max_btn;
  122.     Widget    Uxgreen_min_box;
  123.     Widget    Uxgreen_sc;
  124.     Widget    Uxred_fm;
  125.     Widget    Uxred_max_btn;
  126.     Widget    Uxred_min_box;
  127.     Widget    Uxred_sc;
  128.     Widget    Uxswatch_box;
  129.     Widget    Uxswatch_form;
  130.     Widget    Uxstring_lbl;
  131.     Widget    Uxstring_text;
  132.     Widget    Uxce_ok_btn;
  133.     Widget    Uxce_reset_btn;
  134.     Widget    Uxce_apply_btn;
  135.     Widget    Uxce_cancel_btn;
  136.     int    Uxce_hue;
  137.     int    Uxce_saturation;
  138.     int    Uxce_lightness;
  139.     Boolean    Uxrgb_space;
  140.     Widget    Uxeditor_parent;
  141.     XColor    *Uxi_c;
  142.     XColor    *Uxe_c;
  143. } _UxCcoloredit;
  144.  
  145. #define full_fm                 UxColoreditContext->Uxfull_fm
  146. #define top_box                 UxColoreditContext->Uxtop_box
  147. #define top_lbl                 UxColoreditContext->Uxtop_lbl
  148. #define main_box                UxColoreditContext->Uxmain_box
  149. #define work_fm                 UxColoreditContext->Uxwork_fm
  150. #define hue_fm                  UxColoreditContext->Uxhue_fm
  151. #define hue_sc                  UxColoreditContext->Uxhue_sc
  152. #define hue_red_min             UxColoreditContext->Uxhue_red_min
  153. #define hue_yellow              UxColoreditContext->Uxhue_yellow
  154. #define hue_green               UxColoreditContext->Uxhue_green
  155. #define hue_cyan                UxColoreditContext->Uxhue_cyan
  156. #define hue_blue                UxColoreditContext->Uxhue_blue
  157. #define hue_magenta             UxColoreditContext->Uxhue_magenta
  158. #define hue_red_max             UxColoreditContext->Uxhue_red_max
  159. #define space_radio             UxColoreditContext->Uxspace_radio
  160. #define rgb_tgl                 UxColoreditContext->Uxrgb_tgl
  161. #define cmy_tgl                 UxColoreditContext->Uxcmy_tgl
  162. #define lightness_fm            UxColoreditContext->Uxlightness_fm
  163. #define lightness_min_box       UxColoreditContext->Uxlightness_min_box
  164. #define lightness_max_btn       UxColoreditContext->Uxlightness_max_btn
  165. #define lightness_sc            UxColoreditContext->Uxlightness_sc
  166. #define saturation_fm           UxColoreditContext->Uxsaturation_fm
  167. #define saturation_min_box      UxColoreditContext->Uxsaturation_min_box
  168. #define saturation_max_btn      UxColoreditContext->Uxsaturation_max_btn
  169. #define saturation_sc           UxColoreditContext->Uxsaturation_sc
  170. #define blue_fm                 UxColoreditContext->Uxblue_fm
  171. #define blue_max_btn            UxColoreditContext->Uxblue_max_btn
  172. #define blue_min_box            UxColoreditContext->Uxblue_min_box
  173. #define blue_sc                 UxColoreditContext->Uxblue_sc
  174. #define green_fm                UxColoreditContext->Uxgreen_fm
  175. #define green_max_btn           UxColoreditContext->Uxgreen_max_btn
  176. #define green_min_box           UxColoreditContext->Uxgreen_min_box
  177. #define green_sc                UxColoreditContext->Uxgreen_sc
  178. #define red_fm                  UxColoreditContext->Uxred_fm
  179. #define red_max_btn             UxColoreditContext->Uxred_max_btn
  180. #define red_min_box             UxColoreditContext->Uxred_min_box
  181. #define red_sc                  UxColoreditContext->Uxred_sc
  182. #define swatch_box              UxColoreditContext->Uxswatch_box
  183. #define swatch_form             UxColoreditContext->Uxswatch_form
  184. #define string_lbl              UxColoreditContext->Uxstring_lbl
  185. #define string_text             UxColoreditContext->Uxstring_text
  186. #define ce_ok_btn               UxColoreditContext->Uxce_ok_btn
  187. #define ce_reset_btn            UxColoreditContext->Uxce_reset_btn
  188. #define ce_apply_btn            UxColoreditContext->Uxce_apply_btn
  189. #define ce_cancel_btn           UxColoreditContext->Uxce_cancel_btn
  190. #define ce_hue                  UxColoreditContext->Uxce_hue
  191. #define ce_saturation           UxColoreditContext->Uxce_saturation
  192. #define ce_lightness            UxColoreditContext->Uxce_lightness
  193. #define rgb_space               UxColoreditContext->Uxrgb_space
  194. #define editor_parent           UxColoreditContext->Uxeditor_parent
  195. #define i_c                     UxColoreditContext->Uxi_c
  196. #define e_c                     UxColoreditContext->Uxe_c
  197.  
  198. static _UxCcoloredit    *UxColoreditContext;
  199.  
  200. Widget    coloredit;
  201. Widget    color_dsp;
  202. Widget    orig_dsp;
  203.  
  204. /*******************************************************************************
  205.     Forward declarations of functions that are defined later in this file.
  206. *******************************************************************************/
  207.  
  208. Widget    create_coloredit();
  209.  
  210. /*******************************************************************************
  211.     Auxiliary code from the Declarations Editor:
  212. *******************************************************************************/
  213.  
  214. /* new_init_color ()  - sent by the color view to replace 'init_color'
  215.  *               with a newly activated palette cell.
  216.  */
  217.  
  218. void new_init_color (color)
  219.     XColor * color;
  220. {
  221.     Arg arglist[2];
  222.     init_color = color;
  223.   
  224.     if (! (orig_dsp)) 
  225.         return;
  226.   
  227.     XtSetArg (arglist[0], XmNbackground, init_color->pixel);
  228.     XtSetValues (orig_dsp, arglist, 1);
  229. }
  230.   
  231. /* Color conversions rgb_to_hls and hls_to_rgb
  232.  */
  233.  
  234. #define MAXIMUM(r, g, b)  ((r>g) ? ((r>b) ? (r):(b)) : ((g>b) ? (g):(b))) 
  235. #define MINIMUM(r, g, b)  ((r<g) ? ((r<b) ? (r):(b)) : ((g<b) ? (g):(b))) 
  236.  
  237. static void rgb_to_hls (color,hue, light, sat)
  238.     XColor *color;
  239.     int *hue, *light, *sat;
  240. {
  241.     double max, min;
  242.     double r = (double) color->red/65535;
  243.     double g = (double) color->green/65535;
  244.     double b = (double) color->blue/65535;
  245.     double h, l, s;
  246.     double rc, gc, bc;
  247.  
  248.     max = MAXIMUM(r, g, b);
  249.     min = MINIMUM(r, g, b);
  250.     l = (max + min)/2;
  251.  
  252.     if (max == min) {
  253.         s = 0;
  254.         h = 0;
  255.     }
  256.     else {
  257.         if (l <= 0.5) {
  258.             s = (max-min)/(max+min);
  259.         }
  260.         else {
  261.             s = (max-min)/(2-max-min);
  262.         }
  263.         rc = (max-r)/(max-min);
  264.         gc = (max-g)/(max-min);
  265.         bc = (max-b)/(max-min);
  266.  
  267.         if (r == max)
  268.             h = bc - gc;
  269.         else if (g == max)
  270.             h = 2 + rc - bc;
  271.         else if (b == max)
  272.             h = 4 + gc - rc;
  273.  
  274.         h = h*60;
  275.         if (h < 0)
  276.             h = h +360;
  277.     }
  278.     *hue = (unsigned short) (h);
  279.     *light = (unsigned short) (l * 100);
  280.     *sat = (unsigned short)  (s * 100);
  281. }
  282.  
  283. #define VALUE(n1, n2, h)  ((h < 60) ? (n1 + (n2-n1)*h/60) : ((h<180) ? \
  284.                 (n2) : ((h<240) ? (n1+(n2-n1)*(240-h)/60) : (n1)))) 
  285.  
  286. static void hls_to_rgb(hue, light, sat, color)
  287.     int hue, light, sat;
  288.     XColor * color;
  289. {
  290.     double h = (double) hue;
  291.     double l = (double) light/100;
  292.     double s = (double) sat/100;
  293.     double m1, m2;
  294.     double r, g, b;
  295.  
  296.     if (l<= 0.5)
  297.         m2 = l*(1 + s);
  298.     else
  299.         m2 = l + s - l*s;
  300.     m1 = 2*l - m2;
  301.     if ((s == 0) && (h == 0)) {
  302.         r = l; g = l; b = l;
  303.     }
  304.     else {
  305.         r = VALUE(m1, m2, (((h+120) > 360) ? (h-240) : (h+120)));
  306.         g = VALUE(m1, m2, h);
  307.         b = VALUE(m1, m2, (((h-120) < 0) ? (h+240) : (h-120)));
  308.     }
  309.     color->red =  (int) (r * 65535);
  310.     color->green = (int) (g * 65535);
  311.     color->blue = (int) (b * 65535);
  312. }
  313.  
  314. /* color_string() - return the (hex triple) string representing
  315.  *            the X name for the color.  The string is static,
  316.  *            must be copied by the recipient.  It normally goes
  317.  *            directly into an XmText widget.
  318.  */
  319. char* color_string (color) 
  320.       XColor* color;
  321. {
  322.     int rhex,ghex,bhex;
  323.     static char color_string_buf[32];
  324.  
  325.     rhex = color->red * 255 / 65535;
  326.     ghex = color->green * 255 / 65535;
  327.     bhex = color->blue * 255 / 65535;
  328.     sprintf (color_string_buf, "#%02x%02x%02x", rhex, ghex, bhex);
  329.  
  330.     return color_string_buf;
  331. }
  332.  
  333. /*  setup_pixels() - bind the editor widgets to the cue color cells.
  334.  *             Depends on N_CUES. 
  335.  */
  336.  
  337. static void setup_pixels () 
  338. {
  339.     Arg arglist[2];
  340.  
  341.     /* The main color swatches */
  342.     XtSetArg (arglist[0], XmNbackground, edit_color->pixel);
  343.     XtSetValues (color_dsp, arglist, 1);
  344.  
  345.     XtSetArg (arglist[0], XmNbackground, init_color->pixel);
  346.     XtSetValues (orig_dsp, arglist, 1);
  347.  
  348.     /* Cues marking the end of each scale */
  349.  
  350.     XtSetArg (arglist[0], XmNbackground, cue_colors[0].pixel);
  351.     XtSetValues (saturation_max_btn, arglist, 1);
  352.  
  353.     XtSetArg (arglist[0], XmNbackground, cue_colors[1].pixel);
  354.     XtSetValues (saturation_min_box, arglist, 1);
  355.  
  356.     XtSetArg (arglist[0], XmNbackground, cue_colors[2].pixel);
  357.     XtSetValues (red_min_box, arglist, 1);
  358.  
  359.     XtSetArg (arglist[0], XmNbackground, cue_colors[3].pixel);
  360.     XtSetValues (red_max_btn, arglist, 1);
  361.  
  362.     XtSetArg (arglist[0], XmNbackground, cue_colors[4].pixel);
  363.     XtSetValues (green_min_box, arglist, 1);
  364.  
  365.     XtSetArg (arglist[0], XmNbackground, cue_colors[5].pixel);
  366.     XtSetValues (green_max_btn, arglist, 1);
  367.  
  368.     XtSetArg (arglist[0], XmNbackground, cue_colors[6].pixel);
  369.     XtSetValues (blue_min_box, arglist, 1);
  370.  
  371.     XtSetArg (arglist[0], XmNbackground, cue_colors[7].pixel);
  372.     XtSetValues (blue_max_btn, arglist, 1);
  373.  
  374.     /* The RGB scrollbars change to CMY */
  375.     XtSetArg (arglist[0], XmNbackground, cue_colors[8].pixel);
  376.     XtSetValues (red_sc, arglist, 1);
  377.  
  378.     XtSetArg (arglist[0], XmNbackground, cue_colors[9].pixel);
  379.     XtSetValues (green_sc, arglist, 1);
  380.  
  381.     XtSetArg (arglist[0], XmNbackground, cue_colors[10].pixel);
  382.     XtSetValues (blue_sc, arglist, 1);
  383. }
  384.  
  385. /* copy_color () - copy the RGB components of one XColor to another.
  386.  *          (first argument is target).
  387.  */
  388.  
  389. void copy_color (to, from) 
  390.    XColor *to, *from;
  391. {
  392.     to->red = from->red;
  393.     to->green = from->green;
  394.     to->blue = from->blue;
  395.  
  396. /* put_color_cues () - set all color cues to reflect the current edit_color.
  397.  */
  398.  
  399. static void put_color_cues () 
  400. {
  401.     hls_to_rgb (ce_hue, ce_lightness, 99, &cue_colors[0]);  
  402.  
  403.     hls_to_rgb (ce_hue, ce_lightness,0, &cue_colors[1]);
  404.  
  405.     copy_color (&cue_colors[2], edit_color);
  406.     cue_colors[2].red = rgb_space ? 0 : 65535;
  407.  
  408.     copy_color (&cue_colors[3], edit_color);
  409.     cue_colors[3].red = rgb_space ? 65535 : 0;
  410.  
  411.     copy_color (&cue_colors[4], edit_color);
  412.     cue_colors[4].green = rgb_space ? 0 : 65535;
  413.  
  414.     copy_color (&cue_colors[5], edit_color);
  415.     cue_colors[5].green = rgb_space ? 65535 : 0;
  416.  
  417.     copy_color (&cue_colors[6], edit_color);
  418.     cue_colors[6].blue = rgb_space ? 0 : 65535;
  419.  
  420.     copy_color (&cue_colors[7], edit_color);
  421.     cue_colors[7].blue = rgb_space ? 65535 : 0;
  422.  
  423.     XStoreColors (UxDisplay,sys_cmap,cue_colors, 8);
  424. }
  425.  
  426. /* put_scale_background () - set the backgounds of the RGB scales.
  427.  */
  428.  
  429. static void put_scale_background () 
  430. {
  431.   /* The scale backgrounds are red, green, blue, 
  432.    * or cyan, magenta, yellow. 
  433.    */ 
  434.     hls_to_rgb ((rgb_space ? 0 : 180), 40, 50, &cue_colors[8]);  
  435.     hls_to_rgb ((rgb_space ? 120 : 300), 40, 50, &cue_colors[9]);  
  436.     hls_to_rgb ((rgb_space ? 240 : 60), 40, 50, &cue_colors[10]);  
  437.     XStoreColors (UxDisplay, sys_cmap, &cue_colors[8], 3);
  438. }
  439.  
  440. /* apply_color () - adjust scrollbars and cues to reflect edit_color.
  441.  */
  442. static void apply_color (sender)
  443. int sender;
  444. {
  445.    
  446.     if (sender != CE_HLS_SCALE) {
  447.         rgb_to_hls (edit_color,  &ce_hue, &ce_lightness, &ce_saturation);
  448.         XtVaSetValues( hue_sc, XmNvalue, ce_hue, NULL );
  449.         XtVaSetValues( lightness_sc, XmNvalue, ce_lightness, NULL );
  450.         XtVaSetValues( saturation_sc, XmNvalue, ce_saturation, NULL );
  451.     }
  452.  
  453.     if (sender != CE_RGB_SCALE) {
  454.         XtVaSetValues( red_sc, XmNvalue, (int) edit_color->red, NULL );
  455.         XtVaSetValues( green_sc, XmNvalue, (int) edit_color->green, NULL );
  456.         XtVaSetValues( blue_sc, XmNvalue, (int) edit_color->blue, NULL );
  457.     }
  458.  
  459.     XStoreColor (UxDisplay, sys_cmap, edit_color);
  460. /*
  461.     XtVaSetValues( string_text, XmNvalue, color_string (edit_color), NULL );
  462. */
  463.     put_color_cues ();
  464. }
  465.  
  466. /*******************************************************************************
  467.     The following are callback functions.
  468. *******************************************************************************/
  469.  
  470. static void    popupCB_coloredit( UxWidget, UxClientData, UxCallbackArg )
  471.     Widget        UxWidget;
  472.     XtPointer    UxClientData, UxCallbackArg;
  473. {
  474.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  475.  
  476.     UxSaveCtx = UxColoreditContext;
  477.     UxColoreditContext = UxContext =
  478.             (_UxCcoloredit *) UxGetContext( UxWidget );
  479.     {
  480.     copy_color (edit_color, init_color);
  481.     apply_color (CE_INIT);
  482.      }
  483.     UxColoreditContext = UxSaveCtx;
  484. }
  485.  
  486. static void    valueChangedCB_hue_sc( UxWidget, UxClientData, UxCallbackArg )
  487.     Widget        UxWidget;
  488.     XtPointer    UxClientData, UxCallbackArg;
  489. {
  490.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  491.  
  492.     UxSaveCtx = UxColoreditContext;
  493.     UxColoreditContext = UxContext =
  494.             (_UxCcoloredit *) UxGetContext( UxWidget );
  495.     {
  496.     ce_hue = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  497.     hls_to_rgb (ce_hue, ce_lightness, ce_saturation, edit_color);
  498.     apply_color (CE_HLS_SCALE);
  499.     }
  500.     UxColoreditContext = UxSaveCtx;
  501. }
  502.  
  503. static void    dragCB_hue_sc( UxWidget, UxClientData, UxCallbackArg )
  504.     Widget        UxWidget;
  505.     XtPointer    UxClientData, UxCallbackArg;
  506. {
  507.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  508.  
  509.     UxSaveCtx = UxColoreditContext;
  510.     UxColoreditContext = UxContext =
  511.             (_UxCcoloredit *) UxGetContext( UxWidget );
  512.     {
  513.     ce_hue = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  514.     hls_to_rgb (ce_hue, ce_lightness, ce_saturation, edit_color);
  515.     apply_color (CE_HLS_SCALE);
  516.     }
  517.     UxColoreditContext = UxSaveCtx;
  518. }
  519.  
  520. static void    valueChangedCB_rgb_tgl( UxWidget, UxClientData, UxCallbackArg )
  521.     Widget        UxWidget;
  522.     XtPointer    UxClientData, UxCallbackArg;
  523. {
  524.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  525.     Boolean UxBoolValue;
  526.  
  527.     UxSaveCtx = UxColoreditContext;
  528.     UxColoreditContext = UxContext =
  529.             (_UxCcoloredit *) UxGetContext( UxWidget );
  530.     {
  531.     if (!strcmp (
  532.         (XtVaGetValues( UxWidget, XmNset, &UxBoolValue, NULL ),
  533.         (UxBoolValue ? "true" : "false"))
  534.         , "false"))
  535.         return;
  536.     XtVaSetValues( red_sc,
  537.         RES_CONVERT( XmNprocessingDirection, "max_on_right" ), NULL );
  538.     XtVaSetValues( green_sc,
  539.         RES_CONVERT( XmNprocessingDirection, "max_on_right" ), NULL );
  540.     XtVaSetValues( blue_sc,
  541.         RES_CONVERT( XmNprocessingDirection, "max_on_right" ), NULL );
  542.     rgb_space = TRUE;
  543.     put_scale_background ();
  544.     apply_color (CE_SPACE_TGL);
  545.     }
  546.     UxColoreditContext = UxSaveCtx;
  547. }
  548.  
  549. static void    valueChangedCB_cmy_tgl( UxWidget, UxClientData, UxCallbackArg )
  550.     Widget        UxWidget;
  551.     XtPointer    UxClientData, UxCallbackArg;
  552. {
  553.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  554.     Boolean UxBoolValue;
  555.  
  556.     UxSaveCtx = UxColoreditContext;
  557.     UxColoreditContext = UxContext =
  558.             (_UxCcoloredit *) UxGetContext( UxWidget );
  559.     {
  560.     if (!strcmp (
  561.         (XtVaGetValues( UxWidget, XmNset, &UxBoolValue, NULL ),
  562.         (UxBoolValue ? "true" : "false"))
  563.         , "false"))
  564.         return;
  565.     XtVaSetValues( red_sc,
  566.         RES_CONVERT( XmNprocessingDirection, "max_on_left" ), NULL );
  567.     XtVaSetValues( green_sc,
  568.         RES_CONVERT( XmNprocessingDirection, "max_on_left" ), NULL );
  569.     XtVaSetValues( blue_sc,
  570.         RES_CONVERT( XmNprocessingDirection, "max_on_left" ), NULL );
  571.     rgb_space = FALSE;
  572.     put_scale_background ();
  573.     apply_color (CE_SPACE_TGL);
  574.     }
  575.     UxColoreditContext = UxSaveCtx;
  576. }
  577.  
  578. static void    valueChangedCB_lightness_sc( UxWidget, UxClientData, UxCallbackArg )
  579.     Widget        UxWidget;
  580.     XtPointer    UxClientData, UxCallbackArg;
  581. {
  582.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  583.  
  584.     UxSaveCtx = UxColoreditContext;
  585.     UxColoreditContext = UxContext =
  586.             (_UxCcoloredit *) UxGetContext( UxWidget );
  587.     {
  588.     ce_lightness = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  589.     hls_to_rgb (ce_hue, ce_lightness, ce_saturation, edit_color);
  590.     apply_color (CE_HLS_SCALE);
  591.     }
  592.     UxColoreditContext = UxSaveCtx;
  593. }
  594.  
  595. static void    dragCB_lightness_sc( UxWidget, UxClientData, UxCallbackArg )
  596.     Widget        UxWidget;
  597.     XtPointer    UxClientData, UxCallbackArg;
  598. {
  599.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  600.  
  601.     UxSaveCtx = UxColoreditContext;
  602.     UxColoreditContext = UxContext =
  603.             (_UxCcoloredit *) UxGetContext( UxWidget );
  604.     {
  605.     ce_lightness = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  606.     hls_to_rgb(ce_hue, ce_lightness, ce_saturation, edit_color);
  607.     apply_color (CE_HLS_SCALE);
  608.     }
  609.     UxColoreditContext = UxSaveCtx;
  610. }
  611.  
  612. static void    valueChangedCB_saturation_sc( UxWidget, UxClientData, UxCallbackArg )
  613.     Widget        UxWidget;
  614.     XtPointer    UxClientData, UxCallbackArg;
  615. {
  616.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  617.  
  618.     UxSaveCtx = UxColoreditContext;
  619.     UxColoreditContext = UxContext =
  620.             (_UxCcoloredit *) UxGetContext( UxWidget );
  621.     {
  622.     ce_saturation = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  623.     hls_to_rgb(ce_hue, ce_lightness, ce_saturation, edit_color);
  624.     apply_color (CE_HLS_SCALE);
  625.     }
  626.     UxColoreditContext = UxSaveCtx;
  627. }
  628.  
  629. static void    dragCB_saturation_sc( UxWidget, UxClientData, UxCallbackArg )
  630.     Widget        UxWidget;
  631.     XtPointer    UxClientData, UxCallbackArg;
  632. {
  633.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  634.  
  635.     UxSaveCtx = UxColoreditContext;
  636.     UxColoreditContext = UxContext =
  637.             (_UxCcoloredit *) UxGetContext( UxWidget );
  638.     {
  639.     ce_saturation = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  640.     hls_to_rgb (ce_hue, ce_lightness, ce_saturation, edit_color);
  641.     apply_color (CE_HLS_SCALE);
  642.     }
  643.     UxColoreditContext = UxSaveCtx;
  644. }
  645.  
  646. static void    valueChangedCB_blue_sc( UxWidget, UxClientData, UxCallbackArg )
  647.     Widget        UxWidget;
  648.     XtPointer    UxClientData, UxCallbackArg;
  649. {
  650.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  651.  
  652.     UxSaveCtx = UxColoreditContext;
  653.     UxColoreditContext = UxContext =
  654.             (_UxCcoloredit *) UxGetContext( UxWidget );
  655.     {
  656.     edit_color->blue = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  657.     apply_color (CE_RGB_SCALE);
  658.     }
  659.     UxColoreditContext = UxSaveCtx;
  660. }
  661.  
  662. static void    dragCB_blue_sc( UxWidget, UxClientData, UxCallbackArg )
  663.     Widget        UxWidget;
  664.     XtPointer    UxClientData, UxCallbackArg;
  665. {
  666.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  667.  
  668.     UxSaveCtx = UxColoreditContext;
  669.     UxColoreditContext = UxContext =
  670.             (_UxCcoloredit *) UxGetContext( UxWidget );
  671.     {
  672.     edit_color->blue = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  673.     apply_color (CE_RGB_SCALE);
  674.     }
  675.     UxColoreditContext = UxSaveCtx;
  676. }
  677.  
  678. static void    valueChangedCB_green_sc( UxWidget, UxClientData, UxCallbackArg )
  679.     Widget        UxWidget;
  680.     XtPointer    UxClientData, UxCallbackArg;
  681. {
  682.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  683.  
  684.     UxSaveCtx = UxColoreditContext;
  685.     UxColoreditContext = UxContext =
  686.             (_UxCcoloredit *) UxGetContext( UxWidget );
  687.     {
  688.     edit_color->green = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  689.     apply_color (CE_RGB_SCALE);
  690.     }
  691.     UxColoreditContext = UxSaveCtx;
  692. }
  693.  
  694. static void    dragCB_green_sc( UxWidget, UxClientData, UxCallbackArg )
  695.     Widget        UxWidget;
  696.     XtPointer    UxClientData, UxCallbackArg;
  697. {
  698.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  699.  
  700.     UxSaveCtx = UxColoreditContext;
  701.     UxColoreditContext = UxContext =
  702.             (_UxCcoloredit *) UxGetContext( UxWidget );
  703.     {
  704.     edit_color->green = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  705.     apply_color (CE_RGB_SCALE);
  706.     }
  707.     UxColoreditContext = UxSaveCtx;
  708. }
  709.  
  710. static void    valueChangedCB_red_sc( UxWidget, UxClientData, UxCallbackArg )
  711.     Widget        UxWidget;
  712.     XtPointer    UxClientData, UxCallbackArg;
  713. {
  714.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  715.  
  716.     UxSaveCtx = UxColoreditContext;
  717.     UxColoreditContext = UxContext =
  718.             (_UxCcoloredit *) UxGetContext( UxWidget );
  719.     {
  720.     edit_color->red = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  721.     apply_color (CE_RGB_SCALE);
  722.     }
  723.     UxColoreditContext = UxSaveCtx;
  724. }
  725.  
  726. static void    dragCB_red_sc( UxWidget, UxClientData, UxCallbackArg )
  727.     Widget        UxWidget;
  728.     XtPointer    UxClientData, UxCallbackArg;
  729. {
  730.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  731.  
  732.     UxSaveCtx = UxColoreditContext;
  733.     UxColoreditContext = UxContext =
  734.             (_UxCcoloredit *) UxGetContext( UxWidget );
  735.     {
  736.     edit_color->red = ((XmScaleCallbackStruct*) UxCallbackArg)->value;
  737.     apply_color (CE_RGB_SCALE);
  738.     }
  739.     UxColoreditContext = UxSaveCtx;
  740. }
  741.  
  742. static void    activateCB_string_text( UxWidget, UxClientData, UxCallbackArg )
  743.     Widget        UxWidget;
  744.     XtPointer    UxClientData, UxCallbackArg;
  745. {
  746.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  747.  
  748.     UxSaveCtx = UxColoreditContext;
  749.     UxColoreditContext = UxContext =
  750.             (_UxCcoloredit *) UxGetContext( UxWidget );
  751.     {
  752.     char *newname;
  753.     newname = (char *)XmTextFieldGetString (UxWidget);
  754.     if (!XParseColor (UxDisplay, sys_cmap, newname, edit_color)) {
  755. /*
  756.         printf ("problem parsing color %s\n", newname);
  757. */
  758.         sprintf(msgstring, "problem parsing color %s\n", newname);
  759.         DialogType = 1;
  760.         popup_Message();
  761.         return;
  762.     }
  763.     apply_color (CE_TEXT);
  764.     }
  765.     UxColoreditContext = UxSaveCtx;
  766. }
  767.  
  768. static void    activateCB_ce_ok_btn( UxWidget, UxClientData, UxCallbackArg )
  769.     Widget        UxWidget;
  770.     XtPointer    UxClientData, UxCallbackArg;
  771. {
  772.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  773.  
  774.     UxSaveCtx = UxColoreditContext;
  775.     UxColoreditContext = UxContext =
  776.             (_UxCcoloredit *) UxGetContext( UxWidget );
  777.     {
  778.     copy_color (init_color, edit_color);
  779.     XStoreColor (UxDisplay,sys_cmap,init_color);
  780. /*
  781.     update_view ();
  782. */
  783.     UxPopdownInterface (coloredit);
  784.     }
  785.     UxColoreditContext = UxSaveCtx;
  786. }
  787.  
  788. static void    activateCB_ce_reset_btn( UxWidget, UxClientData, UxCallbackArg )
  789.     Widget        UxWidget;
  790.     XtPointer    UxClientData, UxCallbackArg;
  791. {
  792.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  793.  
  794.     UxSaveCtx = UxColoreditContext;
  795.     UxColoreditContext = UxContext =
  796.             (_UxCcoloredit *) UxGetContext( UxWidget );
  797.     {
  798.     copy_color (edit_color, init_color);
  799.     apply_color (CE_INIT);
  800.     }
  801.     UxColoreditContext = UxSaveCtx;
  802. }
  803.  
  804. static void    activateCB_ce_apply_btn( UxWidget, UxClientData, UxCallbackArg )
  805.     Widget        UxWidget;
  806.     XtPointer    UxClientData, UxCallbackArg;
  807. {
  808.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  809.  
  810.     UxSaveCtx = UxColoreditContext;
  811.     UxColoreditContext = UxContext =
  812.             (_UxCcoloredit *) UxGetContext( UxWidget );
  813.     {
  814.     copy_color (init_color, edit_color);
  815.     XStoreColor (UxDisplay,sys_cmap,init_color);
  816. /*
  817.     update_view ();
  818. */
  819.     apply_color (CE_INIT);
  820.     }
  821.     UxColoreditContext = UxSaveCtx;
  822. }
  823.  
  824. static void    activateCB_ce_cancel_btn( UxWidget, UxClientData, UxCallbackArg )
  825.     Widget        UxWidget;
  826.     XtPointer    UxClientData, UxCallbackArg;
  827. {
  828.     _UxCcoloredit           *UxSaveCtx, *UxContext;
  829.  
  830.     UxSaveCtx = UxColoreditContext;
  831.     UxColoreditContext = UxContext =
  832.             (_UxCcoloredit *) UxGetContext( UxWidget );
  833.     {
  834.     UxPopdownInterface (coloredit);
  835.     }
  836.     UxColoreditContext = UxSaveCtx;
  837. }
  838.  
  839.  
  840. /*******************************************************************************
  841.     The 'build_' function creates all the widgets
  842.     using the resource values specified in the Property Editor.
  843. *******************************************************************************/
  844.  
  845. static Widget    _Uxbuild_coloredit()
  846. {
  847.  
  848.     coloredit = XtVaCreatePopupShell( "coloredit",
  849.             xmDialogShellWidgetClass, editor_parent,
  850.             XmNtitle, "Color Editor",
  851.             XmNminWidth, 270,
  852.             XmNminHeight, 310,
  853.             XmNallowShellResize, TRUE,
  854. /*
  855.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  856. */
  857.             XmNheight, 338,
  858.             XmNwidth, 308,
  859.             NULL );
  860.  
  861.     UxPutContext( coloredit, (char *) UxColoreditContext );
  862.  
  863.     full_fm = XtVaCreateWidget( "full_fm",
  864.             xmFormWidgetClass, coloredit,
  865.             XmNautoUnmanage, FALSE,
  866.             XmNallowOverlap, FALSE,
  867. /*
  868.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  869.             XmNshadowThickness, 3,
  870. */
  871.             XmNheight, 360,
  872.             XmNwidth, 340,
  873.             XmNy, 200,
  874.             XmNx, 100,
  875.             NULL );
  876.  
  877.     UxPutContext( full_fm, (char *) UxColoreditContext );
  878.  
  879.     top_box = XtVaCreateManagedWidget( "top_box",
  880.             xmFrameWidgetClass, full_fm,
  881.             XmNtopOffset, 0,
  882.             XmNtopAttachment, XmATTACH_FORM,
  883.             XmNrightOffset, 0,
  884.             XmNrightAttachment, XmATTACH_FORM,
  885.             XmNleftOffset, 0,
  886.             XmNleftAttachment, XmATTACH_FORM,
  887.             XmNbottomOffset, -24,
  888.             XmNbottomAttachment, XmATTACH_OPPOSITE_FORM,
  889.             XmNshadowType, XmSHADOW_OUT,
  890. /*
  891.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  892.             XmNshadowThickness, 3,
  893. */
  894.             NULL );
  895.  
  896.     UxPutContext( top_box, (char *) UxColoreditContext );
  897.  
  898.     top_lbl = XtVaCreateManagedWidget( "top_lbl",
  899.             xmLabelWidgetClass, top_box,
  900.             XmNrecomputeSize, FALSE,
  901.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  902.             RES_CONVERT( XmNlabelString, "Color Editor" ),
  903. /*
  904.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  905. */
  906.             XmNborderWidth, 0,
  907.             NULL );
  908.  
  909.     UxPutContext( top_lbl, (char *) UxColoreditContext );
  910.  
  911.     main_box = XtVaCreateManagedWidget( "main_box",
  912.             xmFrameWidgetClass, full_fm,
  913.             XmNtopWidget, top_box,
  914.             XmNtopOffset, 45,
  915.             XmNtopAttachment, XmATTACH_WIDGET,
  916.             XmNrightOffset, 0,
  917.             XmNrightAttachment, XmATTACH_FORM,
  918.             XmNleftOffset, 0,
  919.             XmNleftAttachment, XmATTACH_FORM,
  920.             XmNbottomOffset, 40,
  921.             XmNbottomAttachment, XmATTACH_FORM,
  922. /*
  923.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  924.             XmNshadowThickness, 3,
  925. */
  926.             XmNshadowType, XmSHADOW_OUT,
  927.             XmNmarginWidth, 8,
  928.             XmNmarginHeight, 8,
  929.             XmNheight, 370,
  930.             XmNwidth, 381,
  931.             XmNy, 69,
  932.             XmNx, 0,
  933.             NULL );
  934.  
  935.     UxPutContext( main_box, (char *) UxColoreditContext );
  936.  
  937.     work_fm = XtVaCreateManagedWidget( "work_fm",
  938.             xmFormWidgetClass, main_box,
  939.             XmNmarginWidth, 10,
  940.             XmNmarginHeight, 10,
  941.             XmNborderWidth, 0,
  942. /*
  943.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  944. */
  945.             NULL );
  946.  
  947.     UxPutContext( work_fm, (char *) UxColoreditContext );
  948.  
  949.     hue_fm = XtVaCreateManagedWidget( "hue_fm",
  950.             xmFormWidgetClass, work_fm,
  951.             XmNtopOffset, 0,
  952.             XmNtopAttachment, XmATTACH_FORM,
  953.             XmNrightOffset, 0,
  954.             XmNrightAttachment, XmATTACH_FORM,
  955.             XmNleftOffset, 0,
  956.             XmNleftAttachment, XmATTACH_FORM,
  957.             XmNborderWidth, 0,
  958.             XmNheight, 30,
  959.             NULL );
  960.  
  961.     UxPutContext( hue_fm, (char *) UxColoreditContext );
  962.  
  963.     hue_sc = XtVaCreateManagedWidget( "hue_sc",
  964.             xmScaleWidgetClass, hue_fm,
  965.             XmNtopPosition, 50,
  966.             XmNtopOffset, 0,
  967.             XmNtopAttachment, XmATTACH_POSITION,
  968.             XmNrightOffset, 0,
  969.             XmNrightAttachment, XmATTACH_FORM,
  970.             XmNleftOffset, 0,
  971.             XmNleftAttachment, XmATTACH_FORM,
  972.             XmNbottomOffset, 0,
  973.             XmNbottomAttachment, XmATTACH_FORM,
  974.             XmNshowValue, FALSE,
  975.             XmNprocessingDirection, XmMAX_ON_RIGHT,
  976.             XmNorientation, XmHORIZONTAL,
  977.             XmNminimum, 0,
  978.             XmNmaximum, 359,
  979.             XmNhighlightThickness, 0,
  980.             XmNheight, 15,
  981.             NULL );
  982.  
  983.     UxPutContext( hue_sc, (char *) UxColoreditContext );
  984.  
  985.     hue_red_min = XtVaCreateManagedWidget( "hue_red_min",
  986.             xmFrameWidgetClass, hue_fm,
  987.             XmNtopOffset, 0,
  988.             XmNtopAttachment, XmATTACH_FORM,
  989.             XmNrightPosition, 10,
  990.             XmNrightOffset, 0,
  991.             XmNrightAttachment, XmATTACH_POSITION,
  992.             XmNleftOffset, 0,
  993.             XmNleftAttachment, XmATTACH_FORM,
  994.             XmNbottomWidget, hue_sc,
  995.             XmNbottomPosition, 30,
  996.             XmNbottomOffset, 0,
  997.             XmNbottomAttachment, XmATTACH_WIDGET,
  998.             XmNshadowType, XmSHADOW_IN,
  999.             XmNshadowThickness, 1,
  1000.             RES_CONVERT( XmNbackground, "#c44" ),
  1001.             NULL );
  1002.  
  1003.     UxPutContext( hue_red_min, (char *) UxColoreditContext );
  1004.  
  1005.     hue_yellow = XtVaCreateManagedWidget( "hue_yellow",
  1006.             xmFrameWidgetClass, hue_fm,
  1007.             XmNtopOffset, 0,
  1008.             XmNtopAttachment, XmATTACH_FORM,
  1009.             XmNrightPosition, 26,
  1010.             XmNrightOffset, 0,
  1011.             XmNrightAttachment, XmATTACH_POSITION,
  1012.             XmNleftPosition, 10,
  1013.             XmNleftOffset, 0,
  1014.             XmNleftAttachment, XmATTACH_POSITION,
  1015.             XmNbottomWidget, hue_sc,
  1016.             XmNbottomPosition, 30,
  1017.             XmNbottomOffset, 0,
  1018.             XmNbottomAttachment, XmATTACH_WIDGET,
  1019.             XmNshadowType, XmSHADOW_IN,
  1020.             XmNshadowThickness, 1,
  1021.             RES_CONVERT( XmNbackground, "#bb3" ),
  1022.             XmNheight, 15,
  1023.             XmNwidth, 50,
  1024.             XmNy, 0,
  1025.             XmNx, 30,
  1026.             NULL );
  1027.  
  1028.     UxPutContext( hue_yellow, (char *) UxColoreditContext );
  1029.  
  1030.     hue_green = XtVaCreateManagedWidget( "hue_green",
  1031.             xmFrameWidgetClass, hue_fm,
  1032.             XmNtopOffset, 0,
  1033.             XmNtopAttachment, XmATTACH_FORM,
  1034.             XmNrightPosition, 42,
  1035.             XmNrightOffset, 0,
  1036.             XmNrightAttachment, XmATTACH_POSITION,
  1037.             XmNleftPosition, 26,
  1038.             XmNleftOffset, 0,
  1039.             XmNleftAttachment, XmATTACH_POSITION,
  1040.             XmNbottomWidget, hue_sc,
  1041.             XmNbottomPosition, 30,
  1042.             XmNbottomOffset, 0,
  1043.             XmNbottomAttachment, XmATTACH_WIDGET,
  1044.             XmNshadowType, XmSHADOW_IN,
  1045.             XmNshadowThickness, 1,
  1046.             RES_CONVERT( XmNbackground, "#3c3" ),
  1047.             NULL );
  1048.  
  1049.     UxPutContext( hue_green, (char *) UxColoreditContext );
  1050.  
  1051.     hue_cyan = XtVaCreateManagedWidget( "hue_cyan",
  1052.             xmFrameWidgetClass, hue_fm,
  1053.             XmNtopOffset, 0,
  1054.             XmNtopAttachment, XmATTACH_FORM,
  1055.             XmNrightPosition, 58,
  1056.             XmNrightOffset, 0,
  1057.             XmNrightAttachment, XmATTACH_POSITION,
  1058.             XmNleftPosition, 42,
  1059.             XmNleftOffset, 0,
  1060.             XmNleftAttachment, XmATTACH_POSITION,
  1061.             XmNbottomWidget, hue_sc,
  1062.             XmNbottomPosition, 30,
  1063.             XmNbottomOffset, 0,
  1064.             XmNbottomAttachment, XmATTACH_WIDGET,
  1065.             XmNshadowType, XmSHADOW_IN,
  1066.             XmNshadowThickness, 1,
  1067.             RES_CONVERT( XmNbackground, "#3bb" ),
  1068.             NULL );
  1069.  
  1070.     UxPutContext( hue_cyan, (char *) UxColoreditContext );
  1071.  
  1072.     hue_blue = XtVaCreateManagedWidget( "hue_blue",
  1073.             xmFrameWidgetClass, hue_fm,
  1074.             XmNtopOffset, 0,
  1075.             XmNtopAttachment, XmATTACH_FORM,
  1076.             XmNrightPosition, 74,
  1077.             XmNrightOffset, 0,
  1078.             XmNrightAttachment, XmATTACH_POSITION,
  1079.             XmNleftPosition, 58,
  1080.             XmNleftOffset, 0,
  1081.             XmNleftAttachment, XmATTACH_POSITION,
  1082.             XmNbottomWidget, hue_sc,
  1083.             XmNbottomPosition, 30,
  1084.             XmNbottomOffset, 0,
  1085.             XmNbottomAttachment, XmATTACH_WIDGET,
  1086.             XmNshadowType, XmSHADOW_IN,
  1087.             XmNshadowThickness, 1,
  1088.             RES_CONVERT( XmNbackground, "#33c" ),
  1089.             NULL );
  1090.  
  1091.     UxPutContext( hue_blue, (char *) UxColoreditContext );
  1092.  
  1093.     hue_magenta = XtVaCreateManagedWidget( "hue_magenta",
  1094.             xmFrameWidgetClass, hue_fm,
  1095.             XmNtopOffset, 0,
  1096.             XmNtopAttachment, XmATTACH_FORM,
  1097.             XmNrightPosition, 90,
  1098.             XmNrightOffset, 0,
  1099.             XmNrightAttachment, XmATTACH_POSITION,
  1100.             XmNleftPosition, 74,
  1101.             XmNleftOffset, 0,
  1102.             XmNleftAttachment, XmATTACH_POSITION,
  1103.             XmNbottomWidget, hue_sc,
  1104.             XmNbottomPosition, 30,
  1105.             XmNbottomOffset, 0,
  1106.             XmNbottomAttachment, XmATTACH_WIDGET,
  1107.             XmNshadowType, XmSHADOW_IN,
  1108.             XmNshadowThickness, 1,
  1109.             RES_CONVERT( XmNbackground, "#b3b" ),
  1110.             NULL );
  1111.  
  1112.     UxPutContext( hue_magenta, (char *) UxColoreditContext );
  1113.  
  1114.     hue_red_max = XtVaCreateManagedWidget( "hue_red_max",
  1115.             xmFrameWidgetClass, hue_fm,
  1116.             XmNtopOffset, 0,
  1117.             XmNtopAttachment, XmATTACH_FORM,
  1118.             XmNrightOffset, 0,
  1119.             XmNrightAttachment, XmATTACH_FORM,
  1120.             XmNleftPosition, 90,
  1121.             XmNleftOffset, 0,
  1122.             XmNleftAttachment, XmATTACH_POSITION,
  1123.             XmNbottomWidget, hue_sc,
  1124.             XmNbottomPosition, 30,
  1125.             XmNbottomOffset, 0,
  1126.             XmNbottomAttachment, XmATTACH_WIDGET,
  1127.             XmNshadowType, XmSHADOW_IN,
  1128.             XmNshadowThickness, 1,
  1129.             RES_CONVERT( XmNbackground, "#c44" ),
  1130.             XmNheight, 6,
  1131.             XmNwidth, 86,
  1132.             XmNy, 4,
  1133.             XmNx, 7,
  1134.             NULL );
  1135.  
  1136.     UxPutContext( hue_red_max, (char *) UxColoreditContext );
  1137.  
  1138.     space_radio = XtVaCreateManagedWidget( "space_radio",
  1139.             xmRowColumnWidgetClass, work_fm,
  1140.             XmNrightOffset, 0,
  1141.             XmNrightAttachment, XmATTACH_FORM,
  1142.             XmNbottomOffset, 0,
  1143.             XmNbottomAttachment, XmATTACH_FORM,
  1144.             XmNradioBehavior, TRUE,
  1145.             XmNradioAlwaysOne, TRUE,
  1146.             XmNpacking, XmPACK_COLUMN,
  1147.             XmNorientation, XmHORIZONTAL,
  1148.             XmNentryBorder, 0,
  1149.             XmNborderWidth, 0,
  1150. /*
  1151.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1152. */
  1153.             XmNheight, 24,
  1154.             NULL );
  1155.  
  1156.     UxPutContext( space_radio, (char *) UxColoreditContext );
  1157.  
  1158.     rgb_tgl = XtVaCreateManagedWidget( "rgb_tgl",
  1159.             xmToggleButtonWidgetClass, space_radio,
  1160.             XmNset, FALSE,
  1161.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1162.             RES_CONVERT( XmNlabelString, "RGB" ),
  1163. /*
  1164.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1165. */
  1166.             XmNborderWidth, 0,
  1167.             XmNheight, 21,
  1168.             XmNwidth, 60,
  1169.             XmNy, 3,
  1170.             XmNx, 0,
  1171.             NULL );
  1172.  
  1173.     UxPutContext( rgb_tgl, (char *) UxColoreditContext );
  1174.  
  1175.     cmy_tgl = XtVaCreateManagedWidget( "cmy_tgl",
  1176.             xmToggleButtonWidgetClass, space_radio,
  1177.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1178.             RES_CONVERT( XmNlabelString, "CMY" ),
  1179. /*
  1180.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1181. */
  1182.             XmNborderWidth, 0,
  1183.             XmNheight, 21,
  1184.             XmNwidth, 50,
  1185.             XmNy, 3,
  1186.             XmNx, 70,
  1187.             NULL );
  1188.  
  1189.     UxPutContext( cmy_tgl, (char *) UxColoreditContext );
  1190.  
  1191.     lightness_fm = XtVaCreateManagedWidget( "lightness_fm",
  1192.             xmFormWidgetClass, work_fm,
  1193.             XmNtopWidget, hue_fm,
  1194.             XmNtopOffset, 10,
  1195.             XmNtopAttachment, XmATTACH_WIDGET,
  1196.             XmNleftOffset, 0,
  1197.             XmNleftAttachment, XmATTACH_FORM,
  1198.             XmNbottomWidget, space_radio,
  1199.             XmNbottomOffset, 0,
  1200.             XmNbottomAttachment, XmATTACH_WIDGET,
  1201.             XmNborderWidth, 0,
  1202. /*
  1203.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1204. */
  1205.             XmNwidth, 15,
  1206.             NULL );
  1207.  
  1208.     UxPutContext( lightness_fm, (char *) UxColoreditContext );
  1209.  
  1210.     lightness_min_box = XtVaCreateManagedWidget( "lightness_min_box",
  1211.             xmFrameWidgetClass, lightness_fm,
  1212.             XmNrightOffset, 0,
  1213.             XmNrightAttachment, XmATTACH_FORM,
  1214.             XmNleftAttachment, XmATTACH_NONE,
  1215.             XmNbottomOffset, 0,
  1216.             XmNbottomAttachment, XmATTACH_FORM,
  1217.             XmNshadowType, XmSHADOW_IN,
  1218.             RES_CONVERT( XmNbackground, "#000" ),
  1219.             XmNheight, 15,
  1220.             XmNwidth, 15,
  1221.             XmNy, 0,
  1222.             NULL );
  1223.  
  1224.     UxPutContext( lightness_min_box, (char *) UxColoreditContext );
  1225.  
  1226.     lightness_max_btn = XtVaCreateManagedWidget( "lightness_max_btn",
  1227.             xmFrameWidgetClass, lightness_fm,
  1228.             XmNtopOffset, 0,
  1229.             XmNtopAttachment, XmATTACH_FORM,
  1230.             XmNrightOffset, 0,
  1231.             XmNrightAttachment, XmATTACH_FORM,
  1232.             XmNshadowType, XmSHADOW_IN,
  1233.             XmNshadowThickness, 2,
  1234.             RES_CONVERT( XmNbackground, "#fff" ),
  1235.             XmNheight, 15,
  1236.             XmNwidth, 15,
  1237.             NULL );
  1238.  
  1239.     UxPutContext( lightness_max_btn, (char *) UxColoreditContext );
  1240.  
  1241.     lightness_sc = XtVaCreateManagedWidget( "lightness_sc",
  1242.             xmScaleWidgetClass, lightness_fm,
  1243.             XmNtopWidget, lightness_max_btn,
  1244.             XmNtopOffset, 0,
  1245.             XmNtopAttachment, XmATTACH_WIDGET,
  1246.             XmNrightOffset, 0,
  1247.             XmNrightAttachment, XmATTACH_FORM,
  1248.             XmNbottomWidget, lightness_min_box,
  1249.             XmNbottomOffset, 0,
  1250.             XmNbottomAttachment, XmATTACH_WIDGET,
  1251.             XmNshowValue, FALSE,
  1252.             XmNprocessingDirection, XmMAX_ON_TOP,
  1253.             XmNorientation, XmVERTICAL,
  1254.             XmNminimum, 0,
  1255.             XmNmaximum, 100,
  1256.             XmNhighlightThickness, 0,
  1257.             XmNdecimalPoints, 2,
  1258.             XmNheight, 210,
  1259.             XmNwidth, 15,
  1260.             XmNy, 20,
  1261.             XmNx, 0,
  1262.             NULL );
  1263.  
  1264.     UxPutContext( lightness_sc, (char *) UxColoreditContext );
  1265.  
  1266.     saturation_fm = XtVaCreateManagedWidget( "saturation_fm",
  1267.             xmFormWidgetClass, work_fm,
  1268.             XmNtopWidget, hue_fm,
  1269.             XmNtopOffset, 10,
  1270.             XmNtopAttachment, XmATTACH_WIDGET,
  1271.             XmNrightWidget, lightness_fm,
  1272.             XmNleftWidget, lightness_fm,
  1273.             XmNleftOffset, 5,
  1274.             XmNleftAttachment, XmATTACH_WIDGET,
  1275.             XmNbottomWidget, space_radio,
  1276.             XmNbottomOffset, 0,
  1277.             XmNbottomAttachment, XmATTACH_WIDGET,
  1278.             XmNborderWidth, 0,
  1279. /*
  1280.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1281. */
  1282.             XmNwidth, 15,
  1283.             NULL );
  1284.  
  1285.     UxPutContext( saturation_fm, (char *) UxColoreditContext );
  1286.  
  1287.     saturation_min_box = XtVaCreateManagedWidget( "saturation_min_box",
  1288.             xmFrameWidgetClass, saturation_fm,
  1289.             XmNrightOffset, 0,
  1290.             XmNrightAttachment, XmATTACH_FORM,
  1291.             XmNbottomOffset, 0,
  1292.             XmNbottomAttachment, XmATTACH_FORM,
  1293.             XmNshadowType, XmSHADOW_IN,
  1294.             XmNheight, 15,
  1295.             XmNwidth, 15,
  1296.             NULL );
  1297.  
  1298.     UxPutContext( saturation_min_box, (char *) UxColoreditContext );
  1299.  
  1300.     saturation_max_btn = XtVaCreateManagedWidget( "saturation_max_btn",
  1301.             xmFrameWidgetClass, saturation_fm,
  1302.             XmNtopOffset, 0,
  1303.             XmNtopAttachment, XmATTACH_FORM,
  1304.             XmNrightOffset, 0,
  1305.             XmNrightAttachment, XmATTACH_FORM,
  1306.             XmNshadowType, XmSHADOW_IN,
  1307.             XmNheight, 15,
  1308.             XmNwidth, 15,
  1309.             NULL );
  1310.  
  1311.     UxPutContext( saturation_max_btn, (char *) UxColoreditContext );
  1312.  
  1313.     saturation_sc = XtVaCreateManagedWidget( "saturation_sc",
  1314.             xmScaleWidgetClass, saturation_fm,
  1315.             XmNtopWidget, saturation_max_btn,
  1316.             XmNtopOffset, 0,
  1317.             XmNtopAttachment, XmATTACH_WIDGET,
  1318.             XmNrightOffset, 0,
  1319.             XmNrightAttachment, XmATTACH_FORM,
  1320.             XmNbottomWidget, saturation_min_box,
  1321.             XmNbottomOffset, 0,
  1322.             XmNbottomAttachment, XmATTACH_WIDGET,
  1323.             XmNshowValue, FALSE,
  1324.             XmNprocessingDirection, XmMAX_ON_TOP,
  1325.             XmNorientation, XmVERTICAL,
  1326.             XmNminimum, 0,
  1327.             XmNmaximum, 100,
  1328.             XmNhighlightThickness, 0,
  1329.             XmNdecimalPoints, 2,
  1330.             XmNheight, 240,
  1331.             XmNwidth, 15,
  1332.             XmNy, 15,
  1333.             XmNx, 5,
  1334.             NULL );
  1335.  
  1336.     UxPutContext( saturation_sc, (char *) UxColoreditContext );
  1337.  
  1338.     blue_fm = XtVaCreateManagedWidget( "blue_fm",
  1339.             xmFormWidgetClass, work_fm,
  1340.             XmNrightOffset, 0,
  1341.             XmNrightAttachment, XmATTACH_FORM,
  1342.             XmNleftWidget, saturation_fm,
  1343.             XmNleftOffset, 10,
  1344.             XmNleftAttachment, XmATTACH_WIDGET,
  1345.             XmNbottomWidget, space_radio,
  1346.             XmNbottomOffset, 0,
  1347.             XmNbottomAttachment, XmATTACH_WIDGET,
  1348.             XmNborderWidth, 0,
  1349.             XmNheight, 15,
  1350.             NULL );
  1351.  
  1352.     UxPutContext( blue_fm, (char *) UxColoreditContext );
  1353.  
  1354.     blue_max_btn = XtVaCreateManagedWidget( "blue_max_btn",
  1355.             xmFrameWidgetClass, blue_fm,
  1356.             XmNrightOffset, 0,
  1357.             XmNrightAttachment, XmATTACH_FORM,
  1358.             XmNbottomOffset, 0,
  1359.             XmNbottomAttachment, XmATTACH_FORM,
  1360.             XmNshadowType, XmSHADOW_IN,
  1361.             RES_CONVERT( XmNborderColor, "#11f" ),
  1362.             XmNheight, 15,
  1363.             XmNwidth, 15,
  1364.             NULL );
  1365.  
  1366.     UxPutContext( blue_max_btn, (char *) UxColoreditContext );
  1367.  
  1368.     blue_min_box = XtVaCreateManagedWidget( "blue_min_box",
  1369.             xmFrameWidgetClass, blue_fm,
  1370.             XmNleftOffset, 0,
  1371.             XmNleftAttachment, XmATTACH_FORM,
  1372.             XmNbottomOffset, 0,
  1373.             XmNbottomAttachment, XmATTACH_FORM,
  1374.             XmNshadowType, XmSHADOW_IN,
  1375.             XmNheight, 15,
  1376.             XmNwidth, 15,
  1377.             NULL );
  1378.  
  1379.     UxPutContext( blue_min_box, (char *) UxColoreditContext );
  1380.  
  1381.     blue_sc = XtVaCreateManagedWidget( "blue_sc",
  1382.             xmScaleWidgetClass, blue_fm,
  1383.             XmNtopOffset, 0,
  1384.             XmNrightWidget, blue_max_btn,
  1385.             XmNrightOffset, 0,
  1386.             XmNrightAttachment, XmATTACH_WIDGET,
  1387.             XmNleftWidget, blue_min_box,
  1388.             XmNleftOffset, 0,
  1389.             XmNleftAttachment, XmATTACH_WIDGET,
  1390.             XmNbottomOffset, 0,
  1391.             XmNbottomAttachment, XmATTACH_FORM,
  1392.             XmNshowValue, FALSE,
  1393.             XmNprocessingDirection, XmMAX_ON_RIGHT,
  1394.             XmNorientation, XmHORIZONTAL,
  1395.             XmNminimum, 0,
  1396.             XmNmaximum, 65535,
  1397.             XmNhighlightThickness, 0,
  1398.             XmNheight, 15,
  1399.             XmNwidth, 221,
  1400.             XmNy, 5,
  1401.             XmNx, 21,
  1402.             NULL );
  1403.  
  1404.     UxPutContext( blue_sc, (char *) UxColoreditContext );
  1405.  
  1406.     green_fm = XtVaCreateManagedWidget( "green_fm",
  1407.             xmFormWidgetClass, work_fm,
  1408.             XmNrightOffset, 0,
  1409.             XmNrightAttachment, XmATTACH_FORM,
  1410.             XmNleftWidget, saturation_fm,
  1411.             XmNleftOffset, 10,
  1412.             XmNleftAttachment, XmATTACH_WIDGET,
  1413.             XmNbottomWidget, blue_fm,
  1414.             XmNbottomOffset, 6,
  1415.             XmNbottomAttachment, XmATTACH_WIDGET,
  1416.             XmNborderWidth, 0,
  1417.             XmNheight, 15,
  1418.             NULL );
  1419.  
  1420.     UxPutContext( green_fm, (char *) UxColoreditContext );
  1421.  
  1422.     green_max_btn = XtVaCreateManagedWidget( "green_max_btn",
  1423.             xmFrameWidgetClass, green_fm,
  1424.             XmNrightOffset, 0,
  1425.             XmNrightAttachment, XmATTACH_FORM,
  1426.             XmNbottomOffset, 0,
  1427.             XmNbottomAttachment, XmATTACH_FORM,
  1428.             XmNshadowType, XmSHADOW_IN,
  1429.             XmNheight, 15,
  1430.             XmNwidth, 15,
  1431.             NULL );
  1432.  
  1433.     UxPutContext( green_max_btn, (char *) UxColoreditContext );
  1434.  
  1435.     green_min_box = XtVaCreateManagedWidget( "green_min_box",
  1436.             xmFrameWidgetClass, green_fm,
  1437.             XmNleftOffset, 0,
  1438.             XmNleftAttachment, XmATTACH_FORM,
  1439.             XmNbottomOffset, 0,
  1440.             XmNbottomAttachment, XmATTACH_FORM,
  1441.             XmNshadowType, XmSHADOW_IN,
  1442.             XmNheight, 15,
  1443.             XmNwidth, 15,
  1444.             NULL );
  1445.  
  1446.     UxPutContext( green_min_box, (char *) UxColoreditContext );
  1447.  
  1448.     green_sc = XtVaCreateManagedWidget( "green_sc",
  1449.             xmScaleWidgetClass, green_fm,
  1450.             XmNtopOffset, 0,
  1451.             XmNrightWidget, green_max_btn,
  1452.             XmNrightOffset, 0,
  1453.             XmNrightAttachment, XmATTACH_WIDGET,
  1454.             XmNleftWidget, green_min_box,
  1455.             XmNleftOffset, 0,
  1456.             XmNleftAttachment, XmATTACH_WIDGET,
  1457.             XmNbottomOffset, 0,
  1458.             XmNbottomAttachment, XmATTACH_FORM,
  1459.             XmNshowValue, FALSE,
  1460.             XmNprocessingDirection, XmMAX_ON_RIGHT,
  1461.             XmNorientation, XmHORIZONTAL,
  1462.             XmNminimum, 0,
  1463.             XmNmaximum, 65535,
  1464.             XmNhighlightThickness, 0,
  1465.             XmNheight, 15,
  1466.             XmNwidth, 280,
  1467.             XmNy, 5,
  1468.             XmNx, 20,
  1469.             NULL );
  1470.  
  1471.     UxPutContext( green_sc, (char *) UxColoreditContext );
  1472.  
  1473.     red_fm = XtVaCreateManagedWidget( "red_fm",
  1474.             xmFormWidgetClass, work_fm,
  1475.             XmNrightOffset, 0,
  1476.             XmNrightAttachment, XmATTACH_FORM,
  1477.             XmNleftWidget, saturation_fm,
  1478.             XmNleftOffset, 10,
  1479.             XmNleftAttachment, XmATTACH_WIDGET,
  1480.             XmNbottomWidget, green_fm,
  1481.             XmNbottomOffset, 5,
  1482.             XmNbottomAttachment, XmATTACH_WIDGET,
  1483.             XmNallowOverlap, FALSE,
  1484.             XmNborderWidth, 0,
  1485.             XmNheight, 15,
  1486.             NULL );
  1487.  
  1488.     UxPutContext( red_fm, (char *) UxColoreditContext );
  1489.  
  1490.     red_max_btn = XtVaCreateManagedWidget( "red_max_btn",
  1491.             xmFrameWidgetClass, red_fm,
  1492.             XmNrightOffset, 0,
  1493.             XmNrightAttachment, XmATTACH_FORM,
  1494.             XmNbottomOffset, 0,
  1495.             XmNbottomAttachment, XmATTACH_FORM,
  1496.             XmNshadowType, XmSHADOW_IN,
  1497.             XmNheight, 15,
  1498.             XmNwidth, 15,
  1499.             NULL );
  1500.  
  1501.     UxPutContext( red_max_btn, (char *) UxColoreditContext );
  1502.  
  1503.     red_min_box = XtVaCreateManagedWidget( "red_min_box",
  1504.             xmFrameWidgetClass, red_fm,
  1505.             XmNleftOffset, 0,
  1506.             XmNleftAttachment, XmATTACH_FORM,
  1507.             XmNbottomOffset, 0,
  1508.             XmNbottomAttachment, XmATTACH_FORM,
  1509.             XmNshadowType, XmSHADOW_IN,
  1510.             XmNheight, 15,
  1511.             XmNwidth, 15,
  1512.             NULL );
  1513.  
  1514.     UxPutContext( red_min_box, (char *) UxColoreditContext );
  1515.  
  1516.     red_sc = XtVaCreateManagedWidget( "red_sc",
  1517.             xmScaleWidgetClass, red_fm,
  1518.             XmNtopOffset, 0,
  1519.             XmNtopAttachment, XmATTACH_FORM,
  1520.             XmNrightWidget, red_max_btn,
  1521.             XmNrightOffset, 0,
  1522.             XmNrightAttachment, XmATTACH_WIDGET,
  1523.             XmNleftWidget, red_min_box,
  1524.             XmNleftOffset, 0,
  1525.             XmNleftAttachment, XmATTACH_WIDGET,
  1526.             XmNbottomOffset, 0,
  1527.             XmNbottomAttachment, XmATTACH_FORM,
  1528.             XmNshowValue, FALSE,
  1529.             XmNprocessingDirection, XmMAX_ON_RIGHT,
  1530.             XmNorientation, XmHORIZONTAL,
  1531.             XmNminimum, 0,
  1532.             XmNmaximum, 65535,
  1533.             XmNhighlightThickness, 0,
  1534.             XmNheight, 15,
  1535.             NULL );
  1536.  
  1537.     UxPutContext( red_sc, (char *) UxColoreditContext );
  1538.  
  1539.     swatch_box = XtVaCreateManagedWidget( "swatch_box",
  1540.             xmFrameWidgetClass, work_fm,
  1541.             XmNtopWidget, hue_fm,
  1542.             XmNtopOffset, 10,
  1543.             XmNtopAttachment, XmATTACH_WIDGET,
  1544.             XmNrightOffset, 0,
  1545.             XmNrightAttachment, XmATTACH_FORM,
  1546.             XmNleftWidget, saturation_fm,
  1547.             XmNleftOffset, 10,
  1548.             XmNleftAttachment, XmATTACH_WIDGET,
  1549.             XmNbottomWidget, red_fm,
  1550.             XmNbottomOffset, 10,
  1551.             XmNbottomAttachment, XmATTACH_WIDGET,
  1552.             XmNshadowType, XmSHADOW_IN,
  1553. /*
  1554.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1555. */
  1556.             XmNshadowThickness, 5,
  1557.             NULL );
  1558.  
  1559.     UxPutContext( swatch_box, (char *) UxColoreditContext );
  1560.  
  1561.     swatch_form = XtVaCreateManagedWidget( "swatch_form",
  1562.             xmFormWidgetClass, swatch_box,
  1563.             XmNborderWidth, 0,
  1564.             RES_CONVERT( XmNbackground, "black" ),
  1565.             XmNheight, 210,
  1566.             XmNwidth, 312,
  1567.             XmNy, 2,
  1568.             XmNx, 4,
  1569.             NULL );
  1570.  
  1571.     UxPutContext( swatch_form, (char *) UxColoreditContext );
  1572.  
  1573.     color_dsp = XtVaCreateManagedWidget( "color_dsp",
  1574.             xmDrawingAreaWidgetClass, swatch_form,
  1575.             XmNtopOffset, 10,
  1576.             XmNtopAttachment, XmATTACH_FORM,
  1577.             XmNrightPosition, 50,
  1578.             XmNrightOffset, 5,
  1579.             XmNrightAttachment, XmATTACH_POSITION,
  1580.             XmNleftOffset, 10,
  1581.             XmNleftAttachment, XmATTACH_FORM,
  1582.             XmNbottomOffset, 10,
  1583.             XmNbottomAttachment, XmATTACH_FORM,
  1584.             XmNresizePolicy, XmRESIZE_NONE,
  1585.             XmNheight, 203,
  1586.             XmNwidth, 139,
  1587.             XmNy, 10,
  1588.             XmNx, 10,
  1589.             NULL );
  1590.  
  1591.     UxPutContext( color_dsp, (char *) UxColoreditContext );
  1592.  
  1593.     orig_dsp = XtVaCreateManagedWidget( "orig_dsp",
  1594.             xmDrawingAreaWidgetClass, swatch_form,
  1595.             XmNtopOffset, 10,
  1596.             XmNtopAttachment, XmATTACH_FORM,
  1597.             XmNrightOffset, 10,
  1598.             XmNrightAttachment, XmATTACH_FORM,
  1599.             XmNleftPosition, 50,
  1600.             XmNleftOffset, 5,
  1601.             XmNleftAttachment, XmATTACH_POSITION,
  1602.             XmNbottomOffset, 10,
  1603.             XmNbottomAttachment, XmATTACH_FORM,
  1604.             XmNresizePolicy, XmRESIZE_NONE,
  1605.             XmNheight, 204,
  1606.             XmNwidth, 146,
  1607.             XmNy, 2,
  1608.             XmNx, 163,
  1609.             NULL );
  1610.  
  1611.     UxPutContext( orig_dsp, (char *) UxColoreditContext );
  1612.  
  1613. /*
  1614.     string_lbl = XtVaCreateManagedWidget( "string_lbl",
  1615.             xmLabelGadgetClass, full_fm,
  1616.             XmNleftOffset, 3,
  1617.             XmNleftAttachment, XmATTACH_FORM,
  1618.             XmNbottomWidget, main_box,
  1619.             XmNbottomOffset, 7,
  1620.             XmNbottomAttachment, XmATTACH_WIDGET,
  1621.             XmNrecomputeSize, TRUE,
  1622.             XmNmarginRight, 5,
  1623.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1624.             RES_CONVERT( XmNlabelString, "Color:" ),
  1625.             XmNalignment, XmALIGNMENT_BEGINNING,
  1626.             XmNheight, 30,
  1627.             XmNy, 48,
  1628.             XmNx, 3,
  1629.             NULL );
  1630.  
  1631.     UxPutContext( string_lbl, (char *) UxColoreditContext );
  1632.  
  1633.     string_text = XtVaCreateManagedWidget( "string_text",
  1634.             xmTextFieldWidgetClass, full_fm,
  1635.                         RES_CONVERT( XmNfontList, "-Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO8859-1" ),
  1636.             RES_CONVERT( XmNbackground, "#7777BB" ),
  1637.             XmNrightOffset, 5,
  1638.             XmNrightAttachment, XmATTACH_FORM,
  1639.             XmNleftWidget, string_lbl,
  1640.             XmNleftOffset, 5,
  1641.             XmNleftAttachment, XmATTACH_WIDGET,
  1642.             XmNbottomWidget, main_box,
  1643.             XmNbottomOffset, 8,
  1644.             XmNbottomAttachment, XmATTACH_WIDGET,
  1645.             XmNheight, 33,
  1646.             XmNwidth, 340,
  1647.             XmNy, 30,
  1648.             XmNx, 61,
  1649.             NULL );
  1650.  
  1651.     UxPutContext( string_text, (char *) UxColoreditContext );
  1652. */
  1653.  
  1654.     ce_ok_btn = XtVaCreateManagedWidget( "ce_ok_btn",
  1655.             xmPushButtonWidgetClass, full_fm,
  1656.             XmNrightPosition, 23,
  1657.             XmNrightAttachment, XmATTACH_POSITION,
  1658.             XmNleftPosition, 3,
  1659.             XmNleftOffset, 0,
  1660.             XmNleftAttachment, XmATTACH_POSITION,
  1661.             XmNbottomOffset, 3,
  1662.             XmNbottomAttachment, XmATTACH_FORM,
  1663.             XmNmarginRight, 7,
  1664.             XmNmarginLeft, 7,
  1665.             XmNrecomputeSize, FALSE,
  1666.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1667.             RES_CONVERT( XmNlabelString, "OK" ),
  1668. /*
  1669.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1670. */
  1671.             XmNheight, 25,
  1672.             XmNwidth, 92,
  1673. /*
  1674.             XmNy, 344,
  1675.             XmNx, 36,
  1676. */
  1677.             NULL );
  1678.  
  1679.     UxPutContext( ce_ok_btn, (char *) UxColoreditContext );
  1680.  
  1681.     ce_reset_btn = XtVaCreateManagedWidget( "ce_reset_btn",
  1682.             xmPushButtonWidgetClass, full_fm,
  1683.             XmNrightPosition, 73,
  1684.             XmNrightOffset, 0,
  1685.             XmNrightAttachment, XmATTACH_POSITION,
  1686.             XmNleftPosition, 52,
  1687.             XmNleftOffset, 0,
  1688.             XmNleftAttachment, XmATTACH_POSITION,
  1689.             XmNbottomOffset, 3,
  1690.             XmNbottomAttachment, XmATTACH_FORM,
  1691.             XmNmarginRight, 7,
  1692.             XmNmarginLeft, 7,
  1693.             XmNrecomputeSize, FALSE,
  1694.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1695.             RES_CONVERT( XmNlabelString, "Reset" ),
  1696. /*
  1697.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1698. */
  1699.             XmNheight, 25,
  1700.             XmNwidth, 74,
  1701. /*
  1702.             XmNy, 467,
  1703.             XmNx, 151,
  1704. */
  1705.             NULL );
  1706.  
  1707.     UxPutContext( ce_reset_btn, (char *) UxColoreditContext );
  1708.  
  1709.     ce_apply_btn = XtVaCreateManagedWidget( "ce_apply_btn",
  1710.             xmPushButtonWidgetClass, full_fm,
  1711.             XmNrightPosition, 48,
  1712.             XmNrightOffset, 0,
  1713.             XmNrightAttachment, XmATTACH_POSITION,
  1714.             XmNleftPosition, 27,
  1715.             XmNleftOffset, 0,
  1716.             XmNleftAttachment, XmATTACH_POSITION,
  1717.             XmNbottomOffset, 3,
  1718.             XmNbottomAttachment, XmATTACH_FORM,
  1719.             XmNmarginRight, 7,
  1720.             XmNmarginLeft, 7,
  1721.             XmNrecomputeSize, FALSE,
  1722.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1723.             RES_CONVERT( XmNlabelString, "Apply" ),
  1724. /*
  1725.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1726. */
  1727.             XmNheight, 25,
  1728.             XmNwidth, 74,
  1729. /*
  1730.             XmNy, 330,
  1731.             XmNx, 70,
  1732. */
  1733.             NULL );
  1734.  
  1735.     UxPutContext( ce_apply_btn, (char *) UxColoreditContext );
  1736.  
  1737.     ce_cancel_btn = XtVaCreateManagedWidget( "ce_cancel_btn",
  1738.             xmPushButtonWidgetClass, full_fm,
  1739.             XmNrightPosition, 97,
  1740.             XmNrightOffset, 0,
  1741.             XmNrightAttachment, XmATTACH_POSITION,
  1742.             XmNleftPosition, 77,
  1743.             XmNleftOffset, 0,
  1744.             XmNleftAttachment, XmATTACH_POSITION,
  1745.             XmNbottomOffset, 3,
  1746.             XmNbottomAttachment, XmATTACH_FORM,
  1747.             XmNmarginRight, 7,
  1748.             XmNmarginLeft, 7,
  1749.             XmNrecomputeSize, FALSE,
  1750.                         RES_CONVERT( XmNfontList, "-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1" ),
  1751.             RES_CONVERT( XmNlabelString, "Cancel" ),
  1752. /*
  1753.             RES_CONVERT( XmNbackground, "#BBBBBB" ),
  1754. */
  1755.             XmNheight, 25,
  1756.             XmNwidth, 74,
  1757. /*
  1758.             XmNy, 329,
  1759.             XmNx, 259,
  1760. */
  1761.             NULL );
  1762.  
  1763.     UxPutContext( ce_cancel_btn, (char *) UxColoreditContext );
  1764.  
  1765.     XtVaSetValues(full_fm, XmNdefaultButton, ce_ok_btn, NULL );
  1766.  
  1767.     XtAddCallback( coloredit, XmNdestroyCallback,
  1768.             UxFreeClientDataCB,
  1769.             (XtPointer) UxColoreditContext );
  1770.  
  1771.     XtAddCallback( coloredit, XmNpopupCallback,
  1772.             popupCB_coloredit,
  1773.             (XtPointer) UxColoreditContext );
  1774.  
  1775.     XtAddCallback( hue_sc, XmNvalueChangedCallback,
  1776.             valueChangedCB_hue_sc,
  1777.             (XtPointer) UxColoreditContext );
  1778.     XtAddCallback( hue_sc, XmNdragCallback,
  1779.             dragCB_hue_sc,
  1780.             (XtPointer) UxColoreditContext );
  1781.  
  1782.     XtAddCallback( rgb_tgl, XmNvalueChangedCallback,
  1783.             valueChangedCB_rgb_tgl,
  1784.             (XtPointer) UxColoreditContext );
  1785.  
  1786.     XtAddCallback( cmy_tgl, XmNvalueChangedCallback,
  1787.             valueChangedCB_cmy_tgl,
  1788.             (XtPointer) UxColoreditContext );
  1789.  
  1790.     XtAddCallback( lightness_sc, XmNvalueChangedCallback,
  1791.             valueChangedCB_lightness_sc,
  1792.             (XtPointer) UxColoreditContext );
  1793.     XtAddCallback( lightness_sc, XmNdragCallback,
  1794.             dragCB_lightness_sc,
  1795.             (XtPointer) UxColoreditContext );
  1796.  
  1797.     XtAddCallback( saturation_sc, XmNvalueChangedCallback,
  1798.             valueChangedCB_saturation_sc,
  1799.             (XtPointer) UxColoreditContext );
  1800.     XtAddCallback( saturation_sc, XmNdragCallback,
  1801.             dragCB_saturation_sc,
  1802.             (XtPointer) UxColoreditContext );
  1803.  
  1804.     XtAddCallback( blue_sc, XmNvalueChangedCallback,
  1805.             valueChangedCB_blue_sc,
  1806.             (XtPointer) UxColoreditContext );
  1807.     XtAddCallback( blue_sc, XmNdragCallback,
  1808.             dragCB_blue_sc,
  1809.             (XtPointer) UxColoreditContext );
  1810.  
  1811.     XtAddCallback( green_sc, XmNvalueChangedCallback,
  1812.             valueChangedCB_green_sc,
  1813.             (XtPointer) UxColoreditContext );
  1814.     XtAddCallback( green_sc, XmNdragCallback,
  1815.             dragCB_green_sc,
  1816.             (XtPointer) UxColoreditContext );
  1817.  
  1818.     XtAddCallback( red_sc, XmNvalueChangedCallback,
  1819.             valueChangedCB_red_sc,
  1820.             (XtPointer) UxColoreditContext );
  1821.     XtAddCallback( red_sc, XmNdragCallback,
  1822.             dragCB_red_sc,
  1823.             (XtPointer) UxColoreditContext );
  1824.  
  1825. /*
  1826.     XtAddCallback( string_text, XmNactivateCallback,
  1827.             activateCB_string_text,
  1828.             (XtPointer) UxColoreditContext );
  1829. */
  1830.  
  1831.     XtAddCallback( ce_ok_btn, XmNactivateCallback,
  1832.             activateCB_ce_ok_btn,
  1833.             (XtPointer) UxColoreditContext );
  1834.  
  1835.     XtAddCallback( ce_reset_btn, XmNactivateCallback,
  1836.             activateCB_ce_reset_btn,
  1837.             (XtPointer) UxColoreditContext );
  1838.  
  1839.     XtAddCallback( ce_apply_btn, XmNactivateCallback,
  1840.             activateCB_ce_apply_btn,
  1841.             (XtPointer) UxColoreditContext );
  1842.  
  1843.     XtAddCallback( ce_cancel_btn, XmNactivateCallback,
  1844.             activateCB_ce_cancel_btn,
  1845.             (XtPointer) UxColoreditContext );
  1846.  
  1847.  
  1848.     XtRealizeWidget( coloredit );
  1849.  
  1850.     return ( coloredit );
  1851. }
  1852.  
  1853. /*******************************************************************************
  1854.     The following function includes the code that was entered
  1855.     in the 'Initial Code' and 'Final Code' sections of the
  1856.     Declarations Editor.  This function is called from the
  1857.     'Interface function' below.
  1858. *******************************************************************************/
  1859.  
  1860. static Widget    _Ux_create_coloredit( _Uxeditor_parent, _Uxi_c, _Uxe_c )
  1861.     Widget    _Uxeditor_parent;
  1862.     XColor    *_Uxi_c;
  1863.     XColor    *_Uxe_c;
  1864. {
  1865.     Widget                 rtrn;
  1866.     _UxCcoloredit           *UxContext;
  1867.  
  1868.     UxColoreditContext = UxContext =
  1869.         (_UxCcoloredit *) XtMalloc( sizeof(_UxCcoloredit) );
  1870.  
  1871.     editor_parent = _Uxeditor_parent;
  1872.     i_c = _Uxi_c;
  1873.     e_c = _Uxe_c;
  1874.     {
  1875.     edit_color = e_c;   /* editable cell for interactive editing */
  1876.     init_color = i_c;   /* palette cell in the color view     */
  1877.     rgb_space = TRUE;
  1878.     copy_color (edit_color, init_color);
  1879.     rtrn = _Uxbuild_coloredit();
  1880.  
  1881.     setup_pixels ();            /* Bind color cells to widgets */
  1882.     put_scale_background ();    /* Initialize RGB scales        */
  1883.     XtVaSetValues (rgb_tgl, RES_CONVERT( XmNset, "true" ), NULL );
  1884.     SetWMhints( coloredit );
  1885.     return rtrn;
  1886.     }
  1887. }
  1888.  
  1889. /*******************************************************************************
  1890.     The following is the 'Interface function' which is the
  1891.     external entry point for creating this interface.
  1892.     This function should be called from your application or from
  1893.     a callback function.
  1894. *******************************************************************************/
  1895.  
  1896. Widget    create_coloredit( _Uxeditor_parent, _Uxi_c, _Uxe_c )
  1897.     Widget    _Uxeditor_parent;
  1898.     XColor    *_Uxi_c;
  1899.     XColor    *_Uxe_c;
  1900. {
  1901.     Widget            _Uxrtrn;
  1902.  
  1903.     _Uxrtrn = _Ux_create_coloredit( _Uxeditor_parent, _Uxi_c, _Uxe_c );
  1904.  
  1905.     return ( _Uxrtrn );
  1906. }
  1907.  
  1908. /*******************************************************************************
  1909.     END OF FILE
  1910. *******************************************************************************/
  1911.  
  1912.