Revert "dtudcfonted, dtudcexch: delete from repository"
[oweals/cde.git] / cde / programs / dtudcfonted / include / udcutil.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these libraries and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: udcutil.h /main/3 1996/11/08 01:58:55 cde-fuj $ */
24 /*
25  *  (c) Copyright 1995 FUJITSU LIMITED
26  *  This is source code modified by FUJITSU LIMITED under the Joint
27  *  Development Agreement for the CDEnext PST.
28  *  This is unpublished proprietary source code of FUJITSU LIMITED
29  */
30
31 #ifndef PRINT_USAGE
32 #define USAGE(a)
33 #define USAGE1(a, b)
34 #define USAGE2(a, b, c)
35 #define USAGE3(a, b, c, d)
36 #define USAGE4(a, b, c, d, e)
37 #else
38 #define USAGE(a)                fprintf(stderr, a)
39 #define USAGE1(a, b)            fprintf(stderr, a, b)
40 #define USAGE2(a, b, c)         fprintf(stderr, a, b, c)
41 #define USAGE3(a, b, c, d)      fprintf(stderr, a, b, c, d)
42 #define USAGE4(a, b, c, d, e)   fprintf(stderr, a, b, c, d, e)
43 #endif
44
45 #define UDC_LINE_MAX    2048
46
47 /* macro for get character strings */
48
49 #define AllocString( str, orgstr, rtn ){ \
50         (str) = (char *)malloc( sizeof(char) * (strlen((orgstr))+1) ) ;\
51         if( !(str) ){\
52                 return( (rtn) ) ;\
53         }\
54         strcpy( (str), (orgstr) ) ;\
55 }
56
57 #define AddString( str, addstr, rtn ){ \
58         (str) = (char *)realloc( (str), sizeof(char) * ( strlen((str)) + strlen((addstr)) + 1 ) ) ;\
59         if( !(str) ){\
60                 return( (rtn) ) ;\
61         }\
62         strcat( (str), (addstr) ) ;\
63 }
64
65 #define ResizeString( str, rtn ){ \
66         (str) = (char *)realloc( (str), sizeof(char) * ( strlen((str)) + 1 ) ) ;\
67         if( !(str) ){\
68                 return( (rtn) ) ;\
69         }\
70 }
71
72 #define FreeString( str ){ \
73         if( (str) ) {\
74                 free( (str) ) ;\
75         }\
76         (str) = NULL ;\
77 }
78
79 /* access to "fonts.dir" */
80
81 #define   XLFD_ELM_CNT                  14
82
83 #define XLFD_ELM_FOUNDRY                1
84 #define XLFD_ELM_FAMILY_NAME            2
85 #define XLFD_ELM_WEIGHT_NAME            3
86 #define XLFD_ELM_SLANT                  4
87 #define XLFD_ELM_SETWIDTH_NAME          5
88 #define XLFD_ELM_ADD_STYLE_NAME         6
89 #define XLFD_ELM_PIXEL_SIZE             7
90 #define XLFD_ELM_POINT_SIZE             8
91 #define XLFD_ELM_RESOLUTION_X           9
92 #define XLFD_ELM_RESOLUTION_Y           10
93 #define XLFD_ELM_SPACING                11
94 #define XLFD_ELM_AVERAGE_WIDTH          12
95 #define XLFD_ELM_CHARSET_REGISTRY       13
96 #define XLFD_ELM_CHARSET_ENCODING       14
97
98
99 static  int     udc_font_elm_cnt ;
100 static  char    udc_font_str_buffer[UDC_LINE_MAX] ;
101 static  char    *udc_font_sp ;
102
103 #define POINTXLFDELM( sp, xlfdname, elm_num ) { \
104         udc_font_sp = (xlfdname) ; \
105         udc_font_elm_cnt = 0 ;\
106         while(*udc_font_sp){\
107             if(*udc_font_sp == '-')     udc_font_elm_cnt++ ;\
108             if( udc_font_elm_cnt == (elm_num) ){\
109                 break ;\
110             }\
111             udc_font_sp++ ;\
112         }\
113         (sp) = udc_font_sp ;\
114 }
115
116 #define GETXLFDELMSTR( sp, xlfdname, elm_num ) { \
117         snprintf( udc_font_str_buffer, sizeof(udc_font_str_buffer), "%s", (xlfdname) ) ; \
118         udc_font_sp = udc_font_str_buffer ; \
119         udc_font_elm_cnt = 0 ;\
120         while(*udc_font_sp){\
121             if(*udc_font_sp == '-')     udc_font_elm_cnt++ ;\
122             if( udc_font_elm_cnt == (elm_num) ){\
123                 udc_font_sp++ ;\
124                 break ;\
125             }\
126             udc_font_sp++ ;\
127         }\
128         (sp) = udc_font_sp ;\
129         while(*udc_font_sp){\
130             if(*udc_font_sp == '-')     udc_font_elm_cnt++ ;\
131             if( udc_font_elm_cnt == (elm_num)+1 ){\
132                 *udc_font_sp = '\0' ;\
133                 break ;\
134             }\
135             udc_font_sp++ ;\
136         }\
137 }
138
139 #define GETCHARSETSTR( char_set, xlfdname ) { \
140         snprintf( udc_font_str_buffer, sizeof(udc_font_str_buffer), "%s", (xlfdname) ) ; \
141         POINTXLFDELM( (char_set), udc_font_str_buffer, XLFD_ELM_CHARSET_REGISTRY ) ; \
142         (char_set)++ ; \
143 }
144
145 #define GETSPACINGSTR( spacing, xlfdname ) { \
146         GETXLFDELMSTR( (spacing), (xlfdname), XLFD_ELM_SPACING ) ; \
147 }