diff options
Diffstat (limited to 'xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m')
-rw-r--r-- | xts5/Xlib14/XmbTextEscapement/XmbTextEscapement.m | 253 |
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 |