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:
authorWillian Padovani Germano <wpgermano@gmail.com>2003-05-08 07:06:46 +0400
committerWillian Padovani Germano <wpgermano@gmail.com>2003-05-08 07:06:46 +0400
commit1e891f844aa02a59269d74d0dc0283e78a7ebda5 (patch)
treee1fa359b455a5146aff95ffc5423a2b370dd8fdf /source/blender/python/api2_2x/Draw.h
parentf20e95b73a3f06d7b59c67e33c2061cbc8a8594f (diff)
* Added submodule Window, including FileSelector and ImageSelector:
Most of the code comes from bpython/intern/opy_window.c, but two new functions were added, to access the file and image selector windows in Blender. * Added submodules Draw (gui) and BGL (OpenGL wrapper): The code comes from bpython/intern/opy_draw.c, with minor changes to integrate it in the new implementation. * Made changes to Camera, Lamp and Image submodules: The implementation was improved. These files should be good starting points for interested new coders to look at, now. * Renamed interface.[ch] to EXPP_interface.[ch] to avoid conflict: There is another interface.h file in source/blender/include.
Diffstat (limited to 'source/blender/python/api2_2x/Draw.h')
-rw-r--r--source/blender/python/api2_2x/Draw.h306
1 files changed, 306 insertions, 0 deletions
diff --git a/source/blender/python/api2_2x/Draw.h b/source/blender/python/api2_2x/Draw.h
new file mode 100644
index 00000000000..2220a48c4c4
--- /dev/null
+++ b/source/blender/python/api2_2x/Draw.h
@@ -0,0 +1,306 @@
+/*
+ *
+ * ***** 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): Willian P. Germano
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+*/
+
+/* The code in Draw.[ch] and BGL.[ch] comes from opy_draw.c in the old
+ * bpython/intern dir, with minor modifications to suit the current
+ * implementation. Important original comments are marked with an @ symbol. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef WIN32
+#include "BLI_winstuff.h"
+#endif
+
+#include "MEM_guardedalloc.h"
+
+#include "BMF_Api.h"
+
+#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
+#include "DNA_text_types.h"
+
+#include "BKE_global.h"
+
+#include "BIF_gl.h"
+#include "BIF_screen.h"
+#include "BIF_space.h"
+#include "BIF_interface.h"
+#include "BIF_mywindow.h"
+
+#include "interface.h"
+#include "mydevice.h" /*@ for all the event constants */
+
+#include "Python.h"
+
+#include "gen_utils.h"
+#include "modules.h"
+
+/*@ hack to flag that window redraw has happened inside slider callback: */
+int EXPP_disable_force_draw;
+
+/* From Window.h, used here by py_slider_update() */
+PyObject *M_Window_Redraw(PyObject *self, PyObject *args);
+
+/* This one was an extern in BPY_main.h, but only opy_draw.c was using it */
+int g_window_redrawn;
+
+static char Draw_doc[] =
+"Module Blender.Draw ... XXX improve this";
+
+static void exit_pydraw (SpaceText *st);
+static uiBlock *Get_uiBlock (void);
+void initDraw (void);
+
+/* Button Object */
+
+typedef struct _Button {
+ PyObject_VAR_HEAD
+
+ int type; /*@ 1 == int, 2 == float, 3 == string */
+ int slen; /*@ length of string (if type == 3) */
+ union {
+ int asint;
+ float asfloat;
+ char *asstr;
+ } val;
+} Button;
+
+static void Button_dealloc(PyObject *self);
+static PyObject *Button_getattr(PyObject *self, char *name);
+static int Button_setattr(PyObject *self, char *name, PyObject *v);
+static PyObject *Button_repr(PyObject *self);
+
+PyTypeObject Button_Type =
+{
+ PyObject_HEAD_INIT(&PyType_Type)
+ 0, /*ob_size*/
+ "Button", /*tp_name*/
+ sizeof(Button), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ (destructor) Button_dealloc, /*tp_dealloc*/
+ (printfunc) 0, /*tp_print*/
+ (getattrfunc) Button_getattr, /*tp_getattr*/
+ (setattrfunc) Button_setattr, /*tp_setattr*/
+ (cmpfunc) 0, /*tp_cmp*/
+ (reprfunc) Button_repr, /*tp_repr*/
+};
+
+static Button *newbutton (void);
+
+/* GUI interface routines */
+
+static void exit_pydraw(SpaceText *st);
+static void exec_callback(SpaceText *st, PyObject *callback, PyObject *args);
+void EXPP_spacetext_do_pywin_draw(SpaceText *st);
+static void spacetext_do_pywin_buttons(SpaceText *st, unsigned short event);
+void EXPP_spacetext_do_pywin_event(SpaceText *st, unsigned short event, short val);
+int EXPP_spacetext_is_pywin(SpaceText *st);
+
+static char Method_Exit_doc[] =
+"() - Exit the windowing interface";
+
+static PyObject *Method_Exit (PyObject *self, PyObject *args);
+
+static char Method_Register_doc[] =
+"(draw, event, button) - Register callbacks for windowing\n\n\
+(draw) A function to draw the screen, taking no arguments\n\
+(event) A function to handle events, taking 2 arguments (evt, val)\n\
+ (evt) The event number\n\
+ (val) The value modifier (for key and mouse press/release)\n\
+(button) A function to handle button events, taking 1 argument (evt)\n\
+ (evt) The button number\n\n\
+A None object can be passed if a callback is unused.";
+
+static PyObject *Method_Register (PyObject *self, PyObject *args);
+
+static char Method_Redraw_doc[] =
+"([after]) - Queue a redraw event\n\n\
+[after=0] Determines whether the redraw is processed before\n\
+or after other input events.\n\n\
+Redraw events are buffered so that regardless of how many events\n\
+are queued the window only receives one redraw event.";
+
+static PyObject *Method_Redraw (PyObject *self, PyObject *args);
+
+static char Method_Draw_doc[] =
+"() - Force an immediate redraw\n\n\
+Forced redraws are not buffered, in other words the window is redrawn\n\
+exactly once for everytime this function is called.";
+
+static PyObject *Method_Draw (PyObject *self, PyObject *args);
+
+static char Method_Create_doc[] =
+"(value) - Create a default Button object\n\
+\n\
+(value) - The value to store in the button\n\
+\n\
+Valid values are ints, floats, and strings";
+
+static PyObject *Method_Create (PyObject *self, PyObject *args);
+
+static uiBlock *Get_uiBlock(void);
+
+static char Method_Button_doc[] =
+"(name, event, x, y, width, height, [tooltip]) - Create a new Button \
+(push) button\n\n\
+(name) A string to display on the button\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+[tooltip=""] The button's tooltip";
+
+static PyObject *Method_Button (PyObject *self, PyObject *args);
+
+static char Method_Menu_doc[] =
+"(name, event, x, y, width, height, default, [tooltip]) - Create a new Menu \
+button\n\n\
+(name) A string to display on the button\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+(default) The number of the option to be selected by default\n\
+[tooltip=""] The button's tooltip\n\n\
+The menu options are specified through the name of the\n\
+button. Options are followed by a format code and seperated\n\
+by the '|' (pipe) character.\n\
+Valid format codes are\n\
+ %t - The option should be used as the title\n\
+ %xN - The option should set the integer N in the button value.";
+
+static PyObject *Method_Menu (PyObject *self, PyObject *args);
+
+static char Method_Toggle_doc[] =
+"(name, event, x, y, width, height, default, [tooltip]) - Create a new Toggle \
+button\n\n\
+(name) A string to display on the button\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+(default) An integer (0 or 1) specifying the default state\n\
+[tooltip=""] The button's tooltip";
+
+static PyObject *Method_Toggle (PyObject *self, PyObject *args);
+static void py_slider_update(void *butv, void *data2_unused);
+
+static char Method_Slider_doc[] =
+"(name, event, x, y, width, height, initial, min, max, [update, tooltip]) - \
+Create a new Slider button\n\n\
+(name) A string to display on the button\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+(initial, min, max) Three values (int or float) specifying the initial \
+ and limit values.\n\
+[update=1] A value controlling whether the slider will emit events as it \
+is edited.\n\
+ A non-zero value (default) enables the events. A zero value supresses them.\n\
+[tooltip=""] The button's tooltip";
+
+static PyObject *Method_Slider (PyObject *self, PyObject *args);
+
+static char Method_Scrollbar_doc[] =
+"(event, x, y, width, height, initial, min, max, [update, tooltip]) - Create a \
+new Scrollbar\n\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+(initial, min, max) Three values (int or float) specifying the initial and limit values.\n\
+[update=1] A value controlling whether the slider will emit events as it is edited.\n\
+ A non-zero value (default) enables the events. A zero value supresses them.\n\
+[tooltip=""] The button's tooltip";
+
+static PyObject *Method_Scrollbar (PyObject *self, PyObject *args);
+
+static char Method_Number_doc[] =
+"(name, event, x, y, width, height, initial, min, max, [tooltip]) - Create a \
+new Number button\n\n\
+(name) A string to display on the button\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+(initial, min, max) Three values (int or float) specifying the initial and \
+limit values.\n\
+[tooltip=""] The button's tooltip";
+
+static PyObject *Method_Number (PyObject *self, PyObject *args);
+
+static char Method_String_doc[] =
+"(name, event, x, y, width, height, initial, length, [tooltip]) - Create a \
+new String button\n\n\
+(name) A string to display on the button\n\
+(event) The event number to pass to the button event function when activated\n\
+(x, y) The lower left coordinate of the button\n\
+(width, height) The button width and height\n\
+(initial) The string to display initially\n\
+(length) The maximum input length\n\
+[tooltip=""] The button's tooltip";
+
+static PyObject *Method_String (PyObject *self, PyObject *args);
+
+static char Method_Text_doc[] =
+"(text) - Draw text onscreen\n\n\
+(text) The text to draw\n";
+
+static PyObject *Method_Text (PyObject *self, PyObject *args);
+
+#define _MethodDef(func, prefix) \
+ {#func, prefix##_##func, METH_VARARGS, prefix##_##func##_doc}
+
+/* So that _MethodDef(delete, Scene) expands to:
+ * {"delete", Scene_delete, METH_VARARGS, Scene_delete_doc} */
+
+#undef MethodDef
+#define MethodDef(func) _MethodDef(func, Method)
+
+static struct PyMethodDef Draw_methods[] = {
+ MethodDef(Create),
+ MethodDef(Button),
+ MethodDef(Toggle),
+ MethodDef(Menu),
+ MethodDef(Slider),
+ MethodDef(Scrollbar),
+ MethodDef(Number),
+ MethodDef(String),
+
+ MethodDef(Text),
+
+ MethodDef(Exit),
+ MethodDef(Redraw),
+ MethodDef(Draw),
+ MethodDef(Register),
+
+ {NULL, NULL}
+};
+
+PyObject *M_Draw_Init (void);
+