aboutsummaryrefslogtreecommitdiff
path: root/libxkbfile/src/xkbdraw.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxkbfile/src/xkbdraw.c')
-rw-r--r--libxkbfile/src/xkbdraw.c268
1 files changed, 133 insertions, 135 deletions
diff --git a/libxkbfile/src/xkbdraw.c b/libxkbfile/src/xkbdraw.c
index c955f0321..6f784fce7 100644
--- a/libxkbfile/src/xkbdraw.c
+++ b/libxkbfile/src/xkbdraw.c
@@ -1,135 +1,133 @@
-/* $Xorg: xkbdraw.c,v 1.3 2000/08/17 19:46:43 cpqbld Exp $ */
-/************************************************************
- Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
-
- 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
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE 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.
-
- ********************************************************/
-/* $XFree86: xc/lib/xkbfile/xkbdraw.c,v 1.3 2001/07/29 05:01:13 tsi Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-
-#include <X11/Xos.h>
-#include <X11/Xfuncs.h>
-#include <X11/Xlib.h>
-#include <X11/keysym.h>
-#include <X11/XKBlib.h>
-#include <X11/extensions/XKBgeom.h>
-#include "XKMformat.h"
-#include "XKBfileInt.h"
-
-static void
-_XkbAddDrawable(XkbDrawablePtr *pfirst,XkbDrawablePtr *plast,XkbDrawablePtr tmp)
-{
-XkbDrawablePtr old;
-
- if (*pfirst==NULL) {
- *pfirst= *plast= tmp;
- }
- else if (tmp->priority>=(*plast)->priority) {
- (*plast)->next= tmp;
- *plast= tmp;
- }
- else if (tmp->priority<(*pfirst)->priority) {
- tmp->next= (*pfirst);
- (*pfirst)= tmp;
- }
- else {
- old= *pfirst;
- while ((old->next)&&(old->next->priority<=tmp->priority)) {
- old= old->next;
- }
- tmp->next= old->next;
- old->next= tmp;
- }
- return;
-}
-
-XkbDrawablePtr
-XkbGetOrderedDrawables(XkbGeometryPtr geom,XkbSectionPtr section)
-{
-XkbDrawablePtr first,last,tmp;
-int i;
-
- first= last= NULL;
- if (geom!=NULL) {
- XkbSectionPtr section;
- XkbDoodadPtr doodad;
- for (i=0,section=geom->sections;i<geom->num_sections;i++,section++) {
- tmp= _XkbTypedCalloc(1,XkbDrawableRec);
- if (!tmp) {
- XkbFreeOrderedDrawables(first);
- return NULL;
- }
- tmp->type= XkbDW_Section;
- tmp->priority= section->priority;
- tmp->u.section= section;
- tmp->next= NULL;
- _XkbAddDrawable(&first,&last,tmp);
- }
- for (i=0,doodad=geom->doodads;i<geom->num_doodads;i++,doodad++) {
- tmp= _XkbTypedCalloc(1,XkbDrawableRec);
- if (!tmp) {
- XkbFreeOrderedDrawables(first);
- return NULL;
- }
- tmp->type= XkbDW_Doodad;
- tmp->priority= doodad->any.priority;
- tmp->u.doodad= doodad;
- tmp->next= NULL;
- _XkbAddDrawable(&first,&last,tmp);
- }
- }
- if (section!=NULL) {
- XkbDoodadPtr doodad;
- for (i=0,doodad=section->doodads;i<section->num_doodads;i++,doodad++) {
- tmp= _XkbTypedCalloc(1,XkbDrawableRec);
- if (!tmp) {
- XkbFreeOrderedDrawables(first);
- return NULL;
- }
- tmp->type= XkbDW_Doodad;
- tmp->priority= doodad->any.priority;
- tmp->u.doodad= doodad;
- tmp->next= NULL;
- _XkbAddDrawable(&first,&last,tmp);
- }
- }
- return first;
-}
-
-void
-XkbFreeOrderedDrawables(XkbDrawablePtr draw)
-{
-XkbDrawablePtr tmp;
-
- for (;draw!=NULL;draw=tmp) {
- tmp= draw->next;
- _XkbFree(draw);
- }
- return;
-}
+/************************************************************
+ Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+ 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
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE 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.
+
+ ********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include <X11/Xos.h>
+#include <X11/Xfuncs.h>
+#include <X11/Xlib.h>
+#include <X11/keysym.h>
+#include <X11/XKBlib.h>
+#include <X11/extensions/XKBgeom.h>
+#include "XKMformat.h"
+#include "XKBfileInt.h"
+
+static void
+_XkbAddDrawable(XkbDrawablePtr *pfirst,XkbDrawablePtr *plast,XkbDrawablePtr tmp)
+{
+XkbDrawablePtr old;
+
+ if (*pfirst==NULL) {
+ *pfirst= *plast= tmp;
+ }
+ else if (tmp->priority>=(*plast)->priority) {
+ (*plast)->next= tmp;
+ *plast= tmp;
+ }
+ else if (tmp->priority<(*pfirst)->priority) {
+ tmp->next= (*pfirst);
+ (*pfirst)= tmp;
+ }
+ else {
+ old= *pfirst;
+ while ((old->next)&&(old->next->priority<=tmp->priority)) {
+ old= old->next;
+ }
+ tmp->next= old->next;
+ old->next= tmp;
+ }
+ return;
+}
+
+XkbDrawablePtr
+XkbGetOrderedDrawables(XkbGeometryPtr geom,XkbSectionPtr section)
+{
+XkbDrawablePtr first,last,tmp;
+int i;
+
+ first= last= NULL;
+ if (geom!=NULL) {
+ XkbSectionPtr section;
+ XkbDoodadPtr doodad;
+ for (i=0,section=geom->sections;i<geom->num_sections;i++,section++) {
+ tmp= _XkbTypedCalloc(1,XkbDrawableRec);
+ if (!tmp) {
+ XkbFreeOrderedDrawables(first);
+ return NULL;
+ }
+ tmp->type= XkbDW_Section;
+ tmp->priority= section->priority;
+ tmp->u.section= section;
+ tmp->next= NULL;
+ _XkbAddDrawable(&first,&last,tmp);
+ }
+ for (i=0,doodad=geom->doodads;i<geom->num_doodads;i++,doodad++) {
+ tmp= _XkbTypedCalloc(1,XkbDrawableRec);
+ if (!tmp) {
+ XkbFreeOrderedDrawables(first);
+ return NULL;
+ }
+ tmp->type= XkbDW_Doodad;
+ tmp->priority= doodad->any.priority;
+ tmp->u.doodad= doodad;
+ tmp->next= NULL;
+ _XkbAddDrawable(&first,&last,tmp);
+ }
+ }
+ if (section!=NULL) {
+ XkbDoodadPtr doodad;
+ for (i=0,doodad=section->doodads;i<section->num_doodads;i++,doodad++) {
+ tmp= _XkbTypedCalloc(1,XkbDrawableRec);
+ if (!tmp) {
+ XkbFreeOrderedDrawables(first);
+ return NULL;
+ }
+ tmp->type= XkbDW_Doodad;
+ tmp->priority= doodad->any.priority;
+ tmp->u.doodad= doodad;
+ tmp->next= NULL;
+ _XkbAddDrawable(&first,&last,tmp);
+ }
+ }
+ return first;
+}
+
+void
+XkbFreeOrderedDrawables(XkbDrawablePtr draw)
+{
+XkbDrawablePtr tmp;
+
+ for (;draw!=NULL;draw=tmp) {
+ tmp= draw->next;
+ _XkbFree(draw);
+ }
+ return;
+}