home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2301 / Gravity.c < prev    next >
C/C++ Source or Header  |  1990-12-28  |  5KB  |  139 lines

  1. /*
  2.  * Author: Jason Baietto, jason@ssd.csd.harris.com
  3.  * xdiary Copyright 1990 Harris Corporation
  4.  *
  5.  * Permission to use, copy, modify, and distribute, this software and its
  6.  * documentation for any purpose is hereby granted without fee, provided that
  7.  * the above copyright notice appear in all copies and that both that
  8.  * copyright notice and this permission notice appear in supporting
  9.  * documentation, and that the name of the copyright holder be used in
  10.  * advertising or publicity pertaining to distribution of the software with
  11.  * specific, written prior permission, and that no fee is charged for further
  12.  * distribution of this software, or any modifications thereof.  The copyright
  13.  * holder makes no representations about the suitability of this software for
  14.  * any purpose.  It is provided "as is" without express or implied warranty.
  15.  *
  16.  * THE COPYRIGHT HOLDER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  17.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND IN NO
  18.  * EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  19.  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM ITS USE,
  20.  * LOSS OF DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT,
  21.  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
  22.  * THE USE OR PERFORMANCE OF THIS SOFTWARE.
  23.  */
  24.  
  25. #include <stdio.h>
  26. #include <ctype.h>
  27. #include <X11/StringDefs.h>
  28. #include <X11/IntrinsicP.h>
  29. #include "GravityP.h"
  30. #include "common.h"
  31.  
  32. #define MAX_STRING_LEN 256
  33.  
  34. /*==========================================================================*/
  35. /*                                 Quarks:                                  */
  36. /*==========================================================================*/
  37. XrmQuark XtQNorthWest;
  38. XrmQuark XtQNorth;
  39. XrmQuark XtQNorthEast;
  40. XrmQuark XtQWest;
  41. XrmQuark XtQCenter;
  42. XrmQuark XtQEast;
  43. XrmQuark XtQSouthWest;
  44. XrmQuark XtQSouth;
  45. XrmQuark XtQSouthEast;
  46.  
  47. XrmQuark XtQNW;
  48. XrmQuark XtQN;
  49. XrmQuark XtQNE;
  50. XrmQuark XtQW;
  51. XrmQuark XtQC;
  52. XrmQuark XtQE;
  53. XrmQuark XtQSW;
  54. XrmQuark XtQS;
  55. XrmQuark XtQSE;
  56.  
  57.  
  58. /*==========================================================================*/
  59. /*                         Gravity Type Converter:                          */
  60. /*==========================================================================*/
  61. static void downcase_string(source, dest)
  62. char * source;
  63. char * dest;
  64. {
  65.    for (; *source != 0; source++, dest++) {
  66.       *dest = DOWNCASE(*source);
  67.    }
  68.    *dest = 0;
  69. }
  70.  
  71.  
  72.  
  73. /*ARGSUSED*/
  74. void GravityConverter(args, num_args, fromVal, toVal)
  75. XrmValuePtr args;
  76. Cardinal    *num_args;
  77. XrmValuePtr fromVal;
  78. XrmValuePtr toVal;
  79. {
  80.    static int initialized = FALSE;
  81.    static XtGravity gravity;
  82.    XrmQuark q;
  83.    char lowerName[MAX_STRING_LEN];
  84.  
  85.    if (!initialized) {
  86.       /* Create quarks the first time we're called. */
  87.       XtQNorthWest  = XrmStringToQuark(XtNnorthWest);
  88.       XtQNorth      = XrmStringToQuark(XtNnorth);
  89.       XtQNorthEast  = XrmStringToQuark(XtNnorthEast);
  90.       XtQWest       = XrmStringToQuark(XtNwest);
  91.       XtQCenter     = XrmStringToQuark(XtNcenter);
  92.       XtQEast       = XrmStringToQuark(XtNeast);
  93.       XtQSouthWest  = XrmStringToQuark(XtNsouthWest);
  94.       XtQSouth      = XrmStringToQuark(XtNsouth);
  95.       XtQSouthEast  = XrmStringToQuark(XtNsouthEast);
  96.  
  97.       XtQNW  = XrmStringToQuark(XtNnorthWest2);
  98.       XtQN   = XrmStringToQuark(XtNnorth2);
  99.       XtQNE  = XrmStringToQuark(XtNnorthEast2);
  100.       XtQW   = XrmStringToQuark(XtNwest2);
  101.       XtQC   = XrmStringToQuark(XtNcenter2);
  102.       XtQE   = XrmStringToQuark(XtNeast2);
  103.       XtQSW  = XrmStringToQuark(XtNsouthWest2);
  104.       XtQS   = XrmStringToQuark(XtNsouth2);
  105.       XtQSE  = XrmStringToQuark(XtNsouthEast2);
  106.    }
  107.  
  108.    downcase_string((char*)fromVal->addr, lowerName);
  109.    q = XrmStringToQuark(lowerName);
  110.  
  111.    toVal->size = sizeof(XtGravity);
  112.    toVal->addr = (XtPointer) &gravity;
  113.  
  114.    if (q == XtQNorthWest || q == XtQNW) {
  115.       gravity = NorthWest;
  116.    } else if (q == XtQNorth || q == XtQN) {
  117.       gravity = North;
  118.    } else if (q == XtQNorthEast || q == XtQNE) {
  119.       gravity = NorthEast;
  120.    } else if (q == XtQWest || q == XtQW) {
  121.       gravity = West;
  122.    } else if (q == XtQCenter || q == XtQC) {
  123.       gravity = Center;
  124.    } else if (q == XtQEast || q == XtQE) {
  125.       gravity = East;
  126.    } else if (q == XtQSouthWest || q == XtQSW) {
  127.       gravity = SouthWest;
  128.    } else if (q == XtQSouth || q == XtQS) {
  129.       gravity = South;
  130.    } else if (q == XtQSouthEast || q == XtQSE) {
  131.       gravity = SouthEast;
  132.    } else {
  133.       XtStringConversionWarning(fromVal->addr, "XtRGravity");
  134.       toVal->addr = NULL;
  135.       toVal->size = 0;
  136.    }
  137. }
  138.  
  139.