merge the formfield patch from ooo-build
[ooovba.git] / hwpfilter / source / hutil.cpp
blob6079fe7d0ad5820155f6ab61afe696a0f4fff589
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: hutil.cpp,v $
10 * $Revision: 1.5 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 /* $Id: hutil.cpp,v 1.5 2008-06-04 10:00:16 vg Exp $ */
33 #include "precompile.h"
35 #include <ctype.h>
36 #include "hwpfile.h"
37 #include "hbox.h"
39 static char *get_one_roman(int num, char one, char five, char ten, char *str)
41 static const char *one_strs[] =
43 "", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"
46 strcpy(str, one_strs[num]);
47 while (*str)
49 switch (*str)
51 case 'i':
52 *str = one;
53 break;
54 case 'v':
55 *str = five;
56 break;
57 case 'x':
58 *str = ten;
60 str++;
62 return str;
66 void num2roman(int num, char *buf)
68 char *pt;
70 pt = get_one_roman((num / 100) % 10, 'c', 'd', 'm', buf);
71 pt = get_one_roman((num / 10) % 10, 'x', 'l', 'c', pt);
72 get_one_roman(num % 10, 'i', 'v', 'x', pt);
76 void str2hstr(const char *c, hchar * i)
78 hchar ch;
80 while( 0 != (ch = *c++))
82 if (ch & 0x80)
84 if (*c > 32)
86 *i++ = (ch << 8) | *c;
87 c++;
90 else
91 *i++ = ch;
93 *i = 0;
97 int hstrlen(const hchar * s)
99 register int n = 0;
101 while (*s++)
102 n++;
103 return (n);