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:
authorJoilnen Leite <joilnen.leite@gmail.com>2005-05-05 01:26:29 +0400
committerJoilnen Leite <joilnen.leite@gmail.com>2005-05-05 01:26:29 +0400
commitcc008dbc308152faeb3d4a0ac3c6dee65b3d5785 (patch)
treebb787923782b0f21d9ab677c247d7f289e5a1e61 /source/blender/python/api2_2x/Font.c
parent6db7d23b5fb7c028c205ba2d7db404665d204b4b (diff)
it wrapping font stuff like font file info
.
Diffstat (limited to 'source/blender/python/api2_2x/Font.c')
-rw-r--r--source/blender/python/api2_2x/Font.c285
1 files changed, 285 insertions, 0 deletions
diff --git a/source/blender/python/api2_2x/Font.c b/source/blender/python/api2_2x/Font.c
new file mode 100644
index 00000000000..5e432a7086d
--- /dev/null
+++ b/source/blender/python/api2_2x/Font.c
@@ -0,0 +1,285 @@
+/*
+ * ***** BEGIN GPL/BL DUAL 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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * This is a new part of Blender.
+ *
+ * Contributor(s): Joilnen Leite
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+#include "BKE_global.h"
+#include "BKE_packedFile.h"
+#include "DNA_vfont_types.h"
+#include "DNA_packedFile_types.h"
+#include "Text3d.h"
+#include "Font.h"
+
+extern PyObject *M_Text3d_LoadFont( PyObject * self, PyObject * args );
+
+/*--------------------Python API function prototypes for the Font module----*/
+PyObject *M_Font_New( PyObject * self, PyObject * args );
+static PyObject *M_Font_Get( PyObject * self, PyObject * args );
+
+/*------------------------Python API Doc strings for the Font module--------*/
+char M_Font_doc[] = "The Blender Font module\n\n\
+This module provides control over **Font Data** objects in Blender.\n\n\
+Example::\n\n\
+ from Blender import Text3d.Font\n\
+ l = Text3d.Font.New()\n";
+char M_Font_New_doc[] = "(name) - return a new Font of name 'name'.";
+char M_Font_Get_doc[] = "(name) - return a new Font of name 'name'.";
+
+/*----- Python method structure definition for Blender.Text3d.Font module---*/
+struct PyMethodDef M_Font_methods[] = {
+ {"New", ( PyCFunction ) M_Font_New, METH_VARARGS, M_Font_New_doc},
+ {"Get", ( PyCFunction ) M_Font_Get, METH_VARARGS, M_Font_New_doc},
+ {NULL, NULL, 0, NULL}
+};
+
+/*--------------- Python BPy_Bone methods declarations:-------------------*/
+static PyObject *Font_getName( BPy_Font * self );
+static PyObject *Font_setName( BPy_Font * self, PyObject * args );
+static PyObject *Font_pack( BPy_Font * self, PyObject * args );
+static PyObject *Font_isPacked( BPy_Font * self );
+
+/*--------------- Python BPy_Font methods table:--------------------------*/
+static PyMethodDef BPy_Font_methods[] = {
+ {"GetName", ( PyCFunction ) Font_getName, METH_NOARGS,
+ "() - return Font name"},
+ {"getName", ( PyCFunction ) Font_getName, METH_NOARGS,
+ "() - return Font name"},
+ {"setName", ( PyCFunction ) Font_setName, METH_VARARGS,
+ "() - return Font name"},
+ {"pack", ( PyCFunction ) Font_pack, METH_VARARGS,
+ "() - pack/unpack Font"},
+ {"isPacked", ( PyCFunction ) Font_isPacked, METH_NOARGS,
+ "() - pack/unpack Font"},
+ {NULL, NULL, 0, NULL}
+};
+
+/*--------------- Python TypeBone callback function prototypes----------*/
+static void Font_dealloc( BPy_Font * font );
+static PyObject *Font_getAttr( BPy_Font * bone, char *name );
+static int Font_setAttr( BPy_Font * font, char *name, PyObject * v );
+static int Font_compare( BPy_Font * a1, BPy_Font * a2 );
+static PyObject *Font_repr( BPy_Font * font );
+
+PyTypeObject Font_Type = {
+ PyObject_HEAD_INIT( NULL )
+ 0, /* ob_size */
+ "Font", /* tp_name */
+ sizeof( BPy_Font ), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ ( destructor ) Font_dealloc, /* tp_dealloc */
+ 0, /* tp_print */
+ ( getattrfunc ) Font_getAttr, /* tp_getattr */
+ ( setattrfunc ) Font_setAttr, /* tp_setattr */
+ ( cmpfunc ) Font_compare, /* tp_compare */
+ ( reprfunc ) Font_repr, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_as_hash */
+ 0, 0, 0, 0, 0, 0,
+ 0, /* tp_doc */
+ 0, 0, 0, 0, 0, 0,
+ BPy_Font_methods, /* tp_methods */
+ 0, /* tp_members */
+};
+
+/*--------------- Font Module Init-----------------------------*/
+PyObject *Font_Init( void )
+{
+ PyObject *submodule;
+
+ Font_Type.ob_type = &PyType_Type;
+
+ submodule = Py_InitModule3( "Blender.Text3d.Font",
+ M_Font_methods, M_Font_doc );
+
+ return ( submodule );
+}
+
+/*--------------- Bone module internal callbacks-----------------*/
+/*---------------BPy_Bone internal callbacks/methods-------------*/
+
+//--------------- dealloc------------------------------------------
+static void Font_dealloc( BPy_Font * self )
+{
+ PyObject_DEL( self );
+}
+
+/*---------------getattr-------------------------------------------*/
+static PyObject *Font_getAttr( BPy_Font * self, char *name )
+{
+ return Py_FindMethod( BPy_Font_methods, ( PyObject * ) self, name );
+}
+
+/*--------------- setattr-------------------------------------------*/
+static int Font_setAttr( BPy_Font * self, char *name, PyObject * value )
+{
+ return 0;
+}
+
+/*--------------- repr---------------------------------------------*/
+static PyObject *Font_repr( BPy_Font * self )
+{
+ if( self->font )
+ return PyString_FromFormat( "[Font \"%s\"]",
+ self->font->name );
+ else
+ return PyString_FromString( "NULL" );
+}
+
+/*--------------- compare------------------------------------------*/
+static int Font_compare( BPy_Font * a, BPy_Font * b )
+{
+ VFont *pa = a->font, *pb = b->font;
+ return ( pa == pb ) ? 0 : -1;
+}
+
+/*--------------- Font_CreatePyObject---------------------------------*/
+PyObject *Font_CreatePyObject( struct VFont * font )
+{
+ BPy_Font *blen_font;
+
+ blen_font = ( BPy_Font * ) PyObject_NEW( BPy_Font, &Font_Type );
+
+ /*set the all important Bone flag*/
+ blen_font->font = font;
+
+ return ( ( PyObject * ) blen_font );
+}
+
+/*--------------- Font_CheckPyObject--------------------------------*/
+int Font_CheckPyObject( PyObject * py_obj )
+{
+ return ( py_obj->ob_type == &Font_Type );
+}
+
+/*--------------- Font_FromPyObject---------------------------------*/
+struct VFont *Font_FromPyObject( PyObject * py_obj )
+{
+ BPy_Font *blen_obj;
+
+ blen_obj = ( BPy_Font * ) py_obj;
+ if( !( ( BPy_Font * ) py_obj )->font ) { /*test to see if linked to text3d*/
+ //use python vars
+ return NULL;
+ } else {
+ //use bone datastruct
+ return ( blen_obj->font );
+ }
+}
+
+/*--------------- Python Font Module methods------------------------*/
+
+/*--------------- Blender.Text3d.Font.New()-----------------------*/
+PyObject *M_Font_New( PyObject * self, PyObject * args )
+{
+ char *name_str = "<builtin>";
+ char *parent_str = "";
+ BPy_Font *py_font = NULL; /* for Font Data object wrapper in Python */
+
+ if( !PyArg_ParseTuple( args, "|s", &name_str ) )
+ return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "expected string or empty argument" ) );
+
+ /*create python font*/
+ if( !S_ISDIR(BLI_exist(name_str)) )
+ py_font= M_Text3d_LoadFont (self, Py_BuildValue("(s)", name_str));
+ else
+ return EXPP_incr_ret( Py_None );
+ return ( PyObject * ) py_font;
+}
+
+/*--------------- Blender.Text3d.Font.Get()-----------------------*/
+static PyObject *M_Font_Get( PyObject * self, PyObject * args )
+{
+ return M_Font_New (self, args);
+}
+
+/*--------------- Python BPy_Font methods---------------------------*/
+
+/*--------------- BPy_Font.getName()--------------------------------*/
+static PyObject *Font_getName( BPy_Font * self )
+{
+ PyObject *attr = NULL;
+
+ if( self->font )
+ attr = PyString_FromString( self->font->name );
+ if( attr )
+ return attr;
+
+ return ( EXPP_ReturnPyObjError( PyExc_RuntimeError,
+ "couldn't get Bone.name attribute" ) );
+}
+
+/*--------------- BPy_Font.setName()---------------------------------*/
+static PyObject *Font_setName( BPy_Font * self, PyObject * args )
+{
+ char *name;
+ char buf[256];
+
+ if( !PyArg_ParseTuple( args, "s", &name ) )
+ return ( EXPP_ReturnPyObjError
+ ( PyExc_AttributeError,
+ "expected string argument" ) );
+
+ /* guarantee a null terminated string of reasonable size */
+ PyOS_snprintf( buf, sizeof( buf ), "%s", name );
+
+ if( self->font )
+ BLI_strncpy( self->font->name, buf, sizeof( buf ) );
+ return EXPP_incr_ret( Py_None );
+}
+
+/*--------------- BPy_Font.pack()---------------------------------*/
+static PyObject *Font_pack( BPy_Font * self, PyObject * args )
+{
+ int pack= 0;
+ if( !PyArg_ParseTuple( args, "i", &pack ) )
+ return ( EXPP_ReturnPyObjError
+ ( PyExc_AttributeError,
+ "expected string argument" ) );
+ if( pack && !self->font->packedfile )
+ self->font->packedfile = newPackedFile(self->font->name);
+ else if (self->font->packedfile)
+ if (unpackVFont(self->font, PF_ASK) == RET_OK)
+ G.fileflags &= ~G_AUTOPACK;
+
+
+ return EXPP_incr_ret( Py_None );
+}
+
+/*--------------- BPy_Font.ispack()---------------------------------*/
+static PyObject *Font_isPacked( BPy_Font * self )
+{
+ if (G.fileflags & G_AUTOPACK)
+ return EXPP_incr_ret_True();
+ else
+ return EXPP_incr_ret_False();
+}
+