Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Borghetti <bdiego@gmail.com>2009-01-29 08:19:27 +0300
committerDiego Borghetti <bdiego@gmail.com>2009-01-29 08:19:27 +0300
commit6e08a165bb36a4812688ee250294233157d982cb (patch)
treeef791a557da0ee4a3e1f36e9db4fcc430191bdb6 /source/blender/blenfont
parent54059f0ac1d9de04fbe26eaccaea83ed9e937b1b (diff)
Moving Language code from interface/text.c to blenfont library.
I go to start commit the new code here and then replace one by one bmfont and ftfont, this do nothing right now, but it's more easy keep the files here to work from the studio and my home. I only update the Makefile and SConscript (but JesterKing a double check never is bad), so please check the msvc and cmake files. The new library is libblenfont.a
Diffstat (limited to 'source/blender/blenfont')
-rw-r--r--source/blender/blenfont/BLF_api.h52
-rw-r--r--source/blender/blenfont/Makefile30
-rw-r--r--source/blender/blenfont/SConscript9
-rw-r--r--source/blender/blenfont/intern/Makefile42
-rw-r--r--source/blender/blenfont/intern/blf_internal_types.h45
-rw-r--r--source/blender/blenfont/intern/blf_lang.c242
6 files changed, 420 insertions, 0 deletions
diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h
new file mode 100644
index 00000000000..0a4ed0d7020
--- /dev/null
+++ b/source/blender/blenfont/BLF_api.h
@@ -0,0 +1,52 @@
+/**
+ * $Id:
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
+ * All rights reserved.
+ *
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BLF_API_H
+#define BLF_API_H
+
+/* Read the .Blanguages file, return 1 on success or 0 if fails. */
+int BLF_lang_init(void);
+
+/* Free the memory allocate for the .Blanguages. */
+void BLF_lang_exit(void);
+
+/* Set the current Language. */
+void BLF_lang_set(int id);
+
+/* Return a string with all the Language available. */
+char *BLF_lang_pup(void);
+
+/* Return the number of invalid lines in the .Blanguages file,
+ * zero means no error found.
+ */
+int BLF_lang_error(void);
+
+/* Return the code string for the specified language code. */
+char *BLF_lang_find_code(short langid);
+
+#endif /* BLF_API_H */
diff --git a/source/blender/blenfont/Makefile b/source/blender/blenfont/Makefile
new file mode 100644
index 00000000000..70dd2e5052b
--- /dev/null
+++ b/source/blender/blenfont/Makefile
@@ -0,0 +1,30 @@
+#
+# $Id:
+#
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# The Original Code is Copyright (C) 2009 Blender Foundation
+# All rights reserved.
+#
+# Contributor(s): none yet.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+SOURCEDIR = source/blender/blenfont
+DIRS = intern
+
+include nan_subdirs.mk
diff --git a/source/blender/blenfont/SConscript b/source/blender/blenfont/SConscript
new file mode 100644
index 00000000000..aa48143efef
--- /dev/null
+++ b/source/blender/blenfont/SConscript
@@ -0,0 +1,9 @@
+#!/usr/bin/python
+import sys
+Import ('env')
+
+sources = env.Glob('intern/*.c')
+
+incs = '. intern ../blenkernel ../blenlib ../makesdna ../ftfont'
+
+env.BlenderLib ( 'bf_blenfont', sources, Split(incs), Split(defs), libtype=['core'], priority=[210] )
diff --git a/source/blender/blenfont/intern/Makefile b/source/blender/blenfont/intern/Makefile
new file mode 100644
index 00000000000..94e80466782
--- /dev/null
+++ b/source/blender/blenfont/intern/Makefile
@@ -0,0 +1,42 @@
+#
+# $Id:
+#
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# The Original Code is Copyright (C) 2008 Blender Foundation.
+# All rights reserved.
+#
+# Contributor(s): none yet.
+#
+# ***** END GPL LICENSE BLOCK *****
+#
+#
+
+LIBNAME = blenfont
+DIR = $(OCGDIR)/blender/blenfont
+
+include nan_compile.mk
+
+CFLAGS += $(LEVEL_1_C_WARNINGS)
+
+CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
+CPPFLAGS += -I../../makesdna
+CPPFLAGS += -I../../blenlib
+CPPFLAGS += -I../../blenkernel
+CPPFLAGS += -I../../ftfont
+
+CPPFLAGS += -I..
diff --git a/source/blender/blenfont/intern/blf_internal_types.h b/source/blender/blenfont/intern/blf_internal_types.h
new file mode 100644
index 00000000000..3a8c1bca3f5
--- /dev/null
+++ b/source/blender/blenfont/intern/blf_internal_types.h
@@ -0,0 +1,45 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BLF_INTERNAL_TYPES_H
+#define BLF_INTERNAL_TYPES_H
+
+typedef struct LangBLF {
+ struct LangBLF *next;
+ struct LangBLF *prev;
+
+ char *line;
+ char *language;
+ char *code;
+ int id;
+} LangBLF;
+
+#define BLF_LANG_FIND_BY_LINE 0
+#define BLF_LANG_FIND_BY_LANGUAGE 1
+#define BLF_LANG_FIND_BY_CODE 2
+
+#endif /* BLF_INTERNAL_TYPES_H */
diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c
new file mode 100644
index 00000000000..527656f67b0
--- /dev/null
+++ b/source/blender/blenfont/intern/blf_lang.c
@@ -0,0 +1,242 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_listBase.h"
+
+#include "BKE_utildefines.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_linklist.h" /* linknode */
+#include "BLI_string.h"
+
+#include "blf_internal_types.h"
+
+// XXX 2.50 Remove this later.
+#include "FTF_Api.h"
+
+static ListBase global_lang= { NULL, NULL };
+static int global_tot_lang= 0;
+static int global_err_lang= 0;
+
+int BLF_lang_error(void)
+{
+ return(global_err_lang);
+}
+
+char *BLF_lang_pup(void)
+{
+ LangBLF *lme;
+ static char string[1024];
+ static char tmp[1024];
+
+ if(global_tot_lang == 0)
+ sprintf(string, "Choose Language: %%t|Language: English %%x0");
+ else {
+ lme= global_lang.first;
+ sprintf(string, "Choose Language: %%t");
+ while (lme) {
+ sprintf(tmp, "|Language: %s %%x%d", lme->language, lme->id);
+ strcat(string, tmp);
+ lme= lme->next;
+ }
+ }
+
+ return(string);
+}
+
+LangBLF *blf_lang_find_by_id(short langid)
+{
+ LangBLF *p;
+
+ p= global_lang.first;
+ while (p) {
+ if (p->id == langid)
+ return(p);
+ p= p->next;
+ }
+ return(NULL);
+}
+
+char *BLF_lang_find_code(short langid)
+{
+ LangBLF *p;
+
+ p= blf_lang_find_by_id(langid);
+ if (p)
+ return(p->code);
+ return(NULL);
+}
+
+void BLF_lang_set(int id)
+{
+ LangBLF *lme;
+
+ // XXX 2.50 Remove this later, with ftfont
+ lme= blf_lang_find_by_id(id);
+ if(lme) FTF_SetLanguage(lme->code);
+ else FTF_SetLanguage("en_US");
+}
+
+static void blf_lang_split(char *line, LangBLF* lme)
+{
+ char *dpointchar= strchr(line, ':');
+
+ if (dpointchar) {
+ lme->code= BLI_strdup(dpointchar+1);
+ *(dpointchar)=0;
+ lme->language= BLI_strdup(line);
+ } else {
+ lme->code= NULL;
+ lme->language= NULL;
+ /* XXX 2.50 bad call error("Invalid language file");
+ * If we set this to NULL, the function blf_lang_new
+ * drop the line and increment the error lang value
+ * so the init code can call BLF_lang_error to get
+ * the number of invalid lines and show the error.
+ */
+ }
+}
+
+LangBLF *blf_lang_find(char *s, int find_by)
+{
+ LangBLF *p;
+
+ p= global_lang.first;
+ while (p) {
+ if (find_by == BLF_LANG_FIND_BY_LINE) {
+ if (BLI_streq(s, p->line))
+ return(p);
+ }
+ else if (find_by == BLF_LANG_FIND_BY_CODE) {
+ if (BLI_streq(s, p->code))
+ return(p);
+ }
+ else if (find_by == BLF_LANG_FIND_BY_LANGUAGE) {
+ if (BLI_streq(s, p->language))
+ return(p);
+ }
+ p= p->next;
+ }
+ return(NULL);
+}
+
+static void blf_lang_new(char *line)
+{
+ LangBLF *lme;
+
+ lme= blf_lang_find(line, BLF_LANG_FIND_BY_LINE);
+ if (!lme) {
+ lme= MEM_mallocN(sizeof(LangBLF), "blf_lang_new");
+ lme->next= NULL;
+ lme->prev= NULL;
+ lme->line = BLI_strdup(line);
+ blf_lang_split(line, lme);
+
+ if (lme->code && lme->language) {
+ lme->id = global_tot_lang;
+ global_tot_lang++;
+ BLI_addhead(&global_lang, lme);
+ }
+ else {
+ global_err_lang++;
+ MEM_freeN(lme->line);
+ MEM_freeN(lme);
+ }
+ }
+}
+
+int BLF_lang_init(void)
+{
+ char name[FILE_MAXDIR+FILE_MAXFILE];
+ LinkNode *l, *lines;
+
+ /* .Blanguages, http://www.blender3d.org/cms/Installation_Policy.352.0.html*/
+#if defined (__APPLE__) || (WIN32)
+ BLI_make_file_string("/", name, BLI_gethome(), ".Blanguages");
+#else
+ BLI_make_file_string("/", name, BLI_gethome(), ".blender/.Blanguages");
+#endif
+
+ lines= BLI_read_file_as_lines(name);
+
+ if(lines == NULL) {
+ /* If not found in home, try current dir
+ * (Resources folder of app bundle on OS X) */
+#if defined (__APPLE__)
+ char *bundlePath = BLI_getbundle();
+ strcpy(name, bundlePath);
+ strcat(name, "/Contents/Resources/.Blanguages");
+#else
+ /* Check the CWD. Takes care of the case where users
+ * unpack blender tarball; cd blender-dir; ./blender */
+ strcpy(name, ".blender/.Blanguages");
+#endif
+ lines= BLI_read_file_as_lines(name);
+
+ if(lines == NULL) {
+ /* If not found in .blender, try current dir */
+ strcpy(name, ".Blanguages");
+ lines= BLI_read_file_as_lines(name);
+ if(lines == NULL) {
+// XXX 2.50 if(G.f & G_DEBUG)
+ printf("File .Blanguages not found\n");
+ return(0);
+ }
+ }
+ }
+
+ for (l= lines; l; l= l->next) {
+ char *line= l->link;
+
+ if (!BLI_streq(line, "")) {
+ blf_lang_new(line);
+ }
+ }
+
+ BLI_free_file_lines(lines);
+ return(1);
+}
+
+void BLF_lang_exit(void)
+{
+ LangBLF *p;
+
+ while (global_lang.first) {
+ p= global_lang.first;
+ BLI_remlink(&global_lang, p);
+ MEM_freeN(p->line);
+ MEM_freeN(p->language);
+ MEM_freeN(p->code);
+ MEM_freeN(p);
+ }
+}