summaryrefslogtreecommitdiff
path: root/xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m
diff options
context:
space:
mode:
Diffstat (limited to 'xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m')
-rw-r--r--xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m253
1 files changed, 253 insertions, 0 deletions
diff --git a/xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m b/xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m
new file mode 100644
index 00000000..7c511564
--- /dev/null
+++ b/xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m
@@ -0,0 +1,253 @@
+Copyright (c) 2005 X.Org Foundation L.L.C.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+ */
+$Header: /cvs/xtest/xtest/xts5/tset/Xlib14/XmbTextEscapement/XmbTextEscapement.m,v 1.2 2005-11-03 08:42:45 jmichael Exp $
+
+Copyright (c) Applied Testing and Technology, Inc. 1995
+All Rights Reserved.
+
+>># Project: VSW5
+>>#
+>># File: xts5/tset/Xlib14/XmbTextEscapement/XmbTextEscapement.m
+>>#
+>># Description:
+>># Tests for XmbTextEscapement()
+>>#
+>># Modifications:
+>># $Log: mbtesc.m,v $
+>># Revision 1.2 2005-11-03 08:42:45 jmichael
+>># clean up all vsw5 paths to use xts5 instead.
+>>#
+>># Revision 1.1.1.2 2005/04/15 14:05:19 anderson
+>># Reimport of the base with the legal name in the copyright fixed.
+>>#
+>># Revision 8.0 1998/12/23 23:38:57 mar
+>># Branch point for Release 5.0.2
+>>#
+>># Revision 7.0 1998/10/30 23:02:03 mar
+>># Branch point for Release 5.0.2b1
+>>#
+>># Revision 6.0 1998/03/02 05:29:58 tbr
+>># Branch point for Release 5.0.1
+>>#
+>># Revision 5.0 1998/01/26 03:26:32 tbr
+>># Branch point for Release 5.0.1b1
+>>#
+>># Revision 4.0 1995/12/15 09:24:00 tbr
+>># Branch point for Release 5.0.0
+>>#
+>># Revision 3.1 1995/12/15 02:01:43 andy
+>># Prepare for GA Release
+>>#
+/*
+
+Copyright (c) 1993 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright no-
+tice appear in all copies and that both that copyright no-
+tice and this permission notice appear in supporting docu-
+mentation, and that the names of Sun or MIT not be used in
+advertising or publicity pertaining to distribution of the
+software without specific prior written permission. Sun and
+M.I.T. make no representations about the suitability of this
+software for any purpose. It is provided "as is" without any
+express or implied warranty.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
+ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+>>EXTERN
+#include <locale.h>
+#include <ximtest.h>
+
+#define MAX_TEST_STR 4
+static char *test_str_list[MAX_TEST_STR] = {
+ "T",
+ "Te",
+ "Tes",
+ "Test",
+};
+>>TITLE XmbTextEscapement Xlib14
+int
+XmbTextEscapement(font_set,pteststr,nbytes)
+XFontSet font_set;
+char *pteststr;
+int nbytes;
+>>SET startup localestartup
+>>SET cleanup localecleanup
+>>ASSERTION Good C
+If the implementation is X11R5 or later:
+xname shall return the escapement of a string for a given fontset.
+>>STRATEGY
+For every Locale specified by the user in the configuration file, create
+each of the base font sets specified by the user, by calling
+XCreateFontSet, then call XmbTextEscapement to get the number of
+pixels to the origin of the next character in the primary draw direction.
+>>CODE
+#if XT_X_RELEASE > 4
+Display *dpy;
+char *plocale;
+char *fontset;
+char *font_list;
+XFontSet pfs;
+char *defstr;
+int missing_cnt;
+char **missing_chars;
+XFontSetExtents *ext;
+int escapement,nbytes,maxescape;
+#endif
+
+#if XT_X_RELEASE > 4
+
+ resetlocale();
+ dpy = Dsp;
+ while(nextlocale(&plocale))
+ {
+ if (locale_set(plocale))
+ CHECK;
+ else
+ {
+ report("Couldn't set locale.");
+ FAIL;
+ continue;
+ }
+
+ /* cycle through the fontsets */
+ resetfontset();
+ while(nextfontset(&font_list))
+ {
+ pfs = XCreateFontSet(dpy,font_list,&missing_chars,
+ &missing_cnt,&defstr);
+ if(pfs == NULL)
+ {
+ report("XCreateFontSet unable to create fontset, %s",
+ font_list);
+ FAIL;
+ }
+ else
+ {
+ trace("Created Font Set %s", font_list);
+ font_set = pfs;
+
+ ext = XExtentsOfFontSet(pfs);
+ if(ext == NULL)
+ {
+ report("Extents of fontset %s returns null record for locale, %s",
+ font_list,plocale);
+ FAIL;
+ }
+ else
+ {
+ int j;
+ trace("Extents for fontset, %s, in locale %s:",
+ font_list,plocale);
+ trace(" Max Ink Extents - (%d,%d) w=%d, h=%d",
+ ext->max_ink_extent.x,
+ ext->max_ink_extent.y,
+ ext->max_ink_extent.width,
+ ext->max_ink_extent.height);
+ trace(" Max Logical Extents - (%d,%d) w=%d, h=%d",
+ ext->max_logical_extent.x,
+ ext->max_logical_extent.y,
+ ext->max_logical_extent.width,
+ ext->max_logical_extent.height);
+
+
+ maxescape = 0;
+ for(j=0;j<MAX_TEST_STR;j++)
+ {
+ pteststr = test_str_list[j];
+ nbytes=strlen(pteststr);
+
+ escapement = XCALL;
+ if(escapement <= 0)
+ {
+ report("Illegal escapement, %d, for string %s",
+ escapement,pteststr);
+ FAIL;
+ continue;
+ }
+ else
+ CHECK;
+ if(escapement < maxescape)
+ {
+ /* as long as the number of characters */
+ /* is increasing, the escapment should */
+ /* be increasing */
+ trace("Escapement size decrease %d max=%d for longer string, %s",
+ escapement,maxescape,pteststr);
+
+ FAIL;
+ }
+ else
+ CHECK;
+ if(escapement > maxescape)
+ {
+ maxescape = escapement;
+ trace("Escapement %d for string, %s",
+ escapement,pteststr);
+ }
+
+ }
+ }
+ XFreeFontSet(dpy,pfs);
+ XFreeStringList(missing_chars);
+ }
+ }
+ }
+
+ CHECKPASS(nlocales()+2*MAX_TEST_STR*nlocales()*nfontset());
+#else
+
+ tet_infoline("INFO: Implementation not X11R5 or greater");
+ tet_result(TET_UNSUPPORTED);
+#endif