00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <X11/Intrinsic.h>
00032 #include <X11/StringDefs.h>
00033 #include "Converters.h"
00034 #include "CharSet.h"
00035
00036
00037
00038
00039 static void InitializeQuarks(void);
00040
00041
00042
00043
00044 static XrmQuark Qhorizontal, Qvertical;
00045 static Boolean haveQuarks;
00046
00047
00048
00049
00050 static void
00051 InitializeQuarks(void)
00052 {
00053 if (!haveQuarks)
00054 {
00055 Qhorizontal = XrmPermStringToQuark(XtEhorizontal);
00056 Qvertical = XrmPermStringToQuark(XtEvertical);
00057 haveQuarks = True;
00058 }
00059 }
00060
00061
00062 void
00063 XmuCvtStringToOrientation(XrmValuePtr args, Cardinal *num_args,
00064 XrmValuePtr fromVal, XrmValuePtr toVal)
00065 {
00066 static XtOrientation orient;
00067 XrmQuark q;
00068 char name[11];
00069
00070 InitializeQuarks();
00071 XmuNCopyISOLatin1Lowered(name, (char *)fromVal->addr, sizeof(name));
00072 q = XrmStringToQuark(name);
00073
00074 toVal->size = sizeof(XtJustify);
00075 toVal->addr = (XPointer)&orient;
00076
00077 if (q == Qhorizontal)
00078 orient = XtorientHorizontal;
00079 else if (q == Qvertical)
00080 orient = XtorientVertical;
00081 else
00082 {
00083 toVal->addr = NULL;
00084 XtStringConversionWarning((char *)fromVal->addr, XtROrientation);
00085 }
00086 }
00087
00088
00089 Boolean
00090 XmuCvtOrientationToString(Display *dpy, XrmValuePtr args, Cardinal *num_args,
00091 XrmValuePtr fromVal, XrmValuePtr toVal,
00092 XtPointer *data)
00093 {
00094 static String buffer;
00095 Cardinal size;
00096
00097 switch (*(XtOrientation *)fromVal->addr)
00098 {
00099 case XtorientVertical:
00100 buffer = XtEvertical;
00101 break;
00102 case XtorientHorizontal:
00103 buffer = XtEhorizontal;
00104 break;
00105 default:
00106 XtWarning("Cannot convert Orientation to String");
00107 toVal->addr = NULL;
00108 toVal->size = 0;
00109 return (False);
00110 }
00111
00112 size = strlen(buffer) + 1;
00113 if (toVal->addr != NULL)
00114 {
00115 if (toVal->size < size)
00116 {
00117 toVal->size = size;
00118 return (False);
00119 }
00120 strcpy((char *)toVal->addr, buffer);
00121 }
00122 else
00123 toVal->addr = (XPointer)buffer;
00124 toVal->size = sizeof(String);
00125
00126 return (True);
00127 }