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:
authorCampbell Barton <ideasman42@gmail.com>2011-05-12 09:35:19 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-05-12 09:35:19 +0400
commit191ad54599b2d8c8677f56870ee1800e62c50137 (patch)
treeb1670620b466e1f865929cb6b1de16650f9510b7
parent521d824371f6b62b09bc8fa9693c3429a14d1d77 (diff)
parent910220be47729d6effffb7aa33bfe05d4caa5d3d (diff)
svn merge -r36603:36628 https://svn.blender.org/svnroot/bf-blender/trunk/blender
-rw-r--r--doc/doxygen/doxygen.source4
-rw-r--r--intern/ghost/intern/GHOST_SystemWin32.cpp2
-rw-r--r--intern/ghost/intern/GHOST_SystemWin32.h2
-rw-r--r--source/blender/CMakeLists.txt1
-rw-r--r--source/blender/SConscript1
-rw-r--r--source/blender/blenkernel/BKE_brush.h3
-rw-r--r--source/blender/blenkernel/intern/brush.c53
-rw-r--r--source/blender/blenloader/BLO_runtime.h (renamed from source/blender/readblenfile/test/test.c)42
-rw-r--r--source/blender/blenloader/CMakeLists.txt3
-rw-r--r--source/blender/blenloader/SConscript2
-rw-r--r--source/blender/blenloader/intern/readblenentry.c2
-rw-r--r--source/blender/blenloader/intern/readfile.c1
-rw-r--r--source/blender/blenloader/intern/runtime.c (renamed from source/blender/readblenfile/intern/BLO_readblenfile.c)91
-rw-r--r--source/blender/editors/physics/particle_edit.c74
-rw-r--r--source/blender/editors/physics/physics_intern.h1
-rw-r--r--source/blender/editors/physics/physics_ops.c12
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c89
-rw-r--r--source/blender/editors/sculpt_paint/paint_intern.h4
-rw-r--r--source/blender/editors/sculpt_paint/paint_ops.c79
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c104
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c60
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c12
-rw-r--r--source/blender/makesdna/DNA_windowmanager_types.h6
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c4
-rw-r--r--source/blender/makesrna/intern/rna_smoke.c2
-rw-r--r--source/blender/makesrna/intern/rna_space.c27
-rw-r--r--source/blender/readblenfile/BLO_readblenfile.h87
-rw-r--r--source/blender/readblenfile/CMakeLists.txt42
-rw-r--r--source/blender/readblenfile/SConscript8
-rw-r--r--source/blender/readblenfile/stub/BLO_readblenfileSTUB.c97
-rw-r--r--source/blender/windowmanager/WM_api.h6
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c577
-rw-r--r--source/blenderplayer/CMakeLists.txt1
-rw-r--r--source/blenderplayer/bad_level_call_stubs/stubs.c1
-rw-r--r--source/creator/CMakeLists.txt1
-rw-r--r--source/gameengine/GamePlayer/ghost/CMakeLists.txt1
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp8
-rw-r--r--source/gameengine/GamePlayer/ghost/SConscript1
38 files changed, 558 insertions, 953 deletions
diff --git a/doc/doxygen/doxygen.source b/doc/doxygen/doxygen.source
index ccdf3448f18..375234d26a3 100644
--- a/doc/doxygen/doxygen.source
+++ b/doc/doxygen/doxygen.source
@@ -145,10 +145,6 @@
* merged in docs.
*/
-/** \defgroup blo readblenfile
- * \ingroup blender data
- */
-
/** \defgroup quicktime quicktime
* \ingroup blender
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index 455a166ece0..ee8ec9e8018 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -42,7 +42,7 @@
#include <iostream>
#ifdef FREE_WINDOWS
-# define _WIN32_WINNT 0x0500 /* GetConsoleWindow() for MinGW */
+# define WINVER 0x0501 /* GetConsoleWindow() for MinGW */
#endif
#include "GHOST_SystemWin32.h"
diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h
index 2dad3a6f44d..8faf9bef4d6 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.h
+++ b/intern/ghost/intern/GHOST_SystemWin32.h
@@ -127,8 +127,6 @@ DECLARE_HANDLE(HRAWINPUT);
#ifdef FREE_WINDOWS
#define NEED_RAW_PROC
typedef BOOL (WINAPI * LPFNDLLRRID)(RAWINPUTDEVICE*,UINT, UINT);
-#define RegisterRawInputDevices(pRawInputDevices, uiNumDevices, cbSize) ((pRegisterRawInputDevices)?pRegisterRawInputDevices(pRawInputDevices, uiNumDevices, cbSize):0)
-
typedef UINT (WINAPI * LPFNDLLGRID)(HRAWINPUT, UINT, LPVOID, PUINT, UINT);
#define GetRawInputData(hRawInput, uiCommand, pData, pcbSize, cbSizeHeader) ((pGetRawInputData)?pGetRawInputData(hRawInput, uiCommand, pData, pcbSize, cbSizeHeader):(UINT)-1)
diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt
index 995b5fe7255..899eef2b312 100644
--- a/source/blender/CMakeLists.txt
+++ b/source/blender/CMakeLists.txt
@@ -92,7 +92,6 @@ add_subdirectory(bmesh)
add_subdirectory(render)
add_subdirectory(blenfont)
add_subdirectory(blenloader)
-add_subdirectory(readblenfile)
add_subdirectory(blenpluginapi)
add_subdirectory(ikplugin)
add_subdirectory(gpu)
diff --git a/source/blender/SConscript b/source/blender/SConscript
index 24514f1660c..e6cd6b09c20 100644
--- a/source/blender/SConscript
+++ b/source/blender/SConscript
@@ -13,7 +13,6 @@ SConscript(['avi/SConscript',
'imbuf/SConscript',
'makesdna/SConscript',
'makesrna/SConscript',
- 'readblenfile/SConscript',
'render/SConscript',
'nodes/SConscript',
'modifiers/SConscript',
diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h
index a9d379e6c69..ad736cd07bf 100644
--- a/source/blender/blenkernel/BKE_brush.h
+++ b/source/blender/blenkernel/BKE_brush.h
@@ -90,8 +90,7 @@ void brush_painter_free(BrushPainter *painter);
unsigned int *brush_gen_texture_cache(struct Brush *br, int half_side);
/* radial control */
-void brush_radial_control_invoke(struct wmOperator *op, struct Brush *br, float size_weight);
-int brush_radial_control_exec(struct wmOperator *op, struct Brush *br, float size_weight);
+struct ImBuf *brush_gen_radial_control_imbuf(struct Brush *br);
/* unified strength and size */
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index fa3b756ae27..98c540f53b7 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -426,13 +426,6 @@ void brush_curve_preset(Brush *b, /*CurveMappingPreset*/int preset)
curvemapping_changed(b->curve, 0);
}
-static MTex *brush_active_texture(Brush *brush)
-{
- if(brush)
- return &brush->mtex;
- return NULL;
-}
-
int brush_texture_set_nr(Brush *brush, int nr)
{
ID *idtest, *id=NULL;
@@ -1185,7 +1178,7 @@ unsigned int *brush_gen_texture_cache(Brush *br, int half_side)
}
/**** Radial Control ****/
-static struct ImBuf *brush_gen_radial_control_imbuf(Brush *br)
+struct ImBuf *brush_gen_radial_control_imbuf(Brush *br)
{
ImBuf *im = MEM_callocN(sizeof(ImBuf), "radial control texture");
unsigned int *texcache;
@@ -1219,50 +1212,6 @@ static struct ImBuf *brush_gen_radial_control_imbuf(Brush *br)
return im;
}
-void brush_radial_control_invoke(wmOperator *op, Brush *br, float size_weight)
-{
- int mode = RNA_enum_get(op->ptr, "mode");
- float original_value= 0;
-
- if(mode == WM_RADIALCONTROL_SIZE)
- original_value = brush_size(br) * size_weight;
- else if(mode == WM_RADIALCONTROL_STRENGTH)
- original_value = brush_alpha(br);
- else if(mode == WM_RADIALCONTROL_ANGLE) {
- MTex *mtex = brush_active_texture(br);
- if(mtex)
- original_value = mtex->rot;
- }
-
- RNA_float_set(op->ptr, "initial_value", original_value);
- op->customdata = brush_gen_radial_control_imbuf(br);
-}
-
-int brush_radial_control_exec(wmOperator *op, Brush *br, float size_weight)
-{
- int mode = RNA_enum_get(op->ptr, "mode");
- float new_value = RNA_float_get(op->ptr, "new_value");
- const float conv = 0.017453293;
-
- if(mode == WM_RADIALCONTROL_SIZE)
- if (brush_use_locked_size(br)) {
- float initial_value = RNA_float_get(op->ptr, "initial_value");
- const float unprojected_radius = brush_unprojected_radius(br);
- brush_set_unprojected_radius(br, unprojected_radius * new_value/initial_value * size_weight);
- }
- else
- brush_set_size(br, new_value * size_weight);
- else if(mode == WM_RADIALCONTROL_STRENGTH)
- brush_set_alpha(br, new_value);
- else if(mode == WM_RADIALCONTROL_ANGLE) {
- MTex *mtex = brush_active_texture(br);
- if(mtex)
- mtex->rot = new_value * conv;
- }
-
- return OPERATOR_FINISHED;
-}
-
/* Unified Size and Strength */
static void set_unified_settings(Brush *brush, short flag, int value)
diff --git a/source/blender/readblenfile/test/test.c b/source/blender/blenloader/BLO_runtime.h
index 647df053c38..920b14e92fa 100644
--- a/source/blender/readblenfile/test/test.c
+++ b/source/blender/blenloader/BLO_runtime.h
@@ -25,27 +25,29 @@
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
+ *
+ */
+
+#ifndef BLO_RUNTIME_H
+#define BLO_RUNTIME_H
+
+/** \file BLO_runtime.h
+ * \ingroup blenloader
*/
-#include <string.h> // strlen
-#include "BLO_readblenfile.h"
-
-struct streamGlueControlStruct *Global_streamGlueControl;
-
- int
-streamGlueWrite(
- struct streamGlueControlStruct *streamGlueControl,
- struct streamGlueStruct **streamGlue,
- unsigned char *data,
- unsigned int dataIn,
- int finishUp)
-{
- printf("called with %d bytes in buffer [%s]\n", dataIn, data);
- return (0);
-}
-main()
-{
- int err;
+#ifdef __cplusplus
+extern "C" {
+#endif
- err = BLO_readblenfile();
+struct BlendFileData;
+struct ReportList;
+
+int BLO_is_a_runtime(char *file);
+struct BlendFileData *BLO_read_runtime(char *file, struct ReportList *reports);
+
+#ifdef __cplusplus
}
+#endif
+
+#endif /* BLO_RUNTIME_H */
+
diff --git a/source/blender/blenloader/CMakeLists.txt b/source/blender/blenloader/CMakeLists.txt
index 4d8ac9bc4b6..888cf3148e3 100644
--- a/source/blender/blenloader/CMakeLists.txt
+++ b/source/blender/blenloader/CMakeLists.txt
@@ -29,7 +29,6 @@ set(INC
../blenlib
../blenkernel
../makesdna
- ../readblenfile
../makesrna
../render/extern/include
../../../intern/guardedalloc
@@ -39,10 +38,12 @@ set(INC
set(SRC
intern/readblenentry.c
intern/readfile.c
+ intern/runtime.c
intern/undofile.c
intern/writefile.c
BLO_readfile.h
+ BLO_runtime.h
BLO_soundfile.h
BLO_sys_types.h
BLO_undofile.h
diff --git a/source/blender/blenloader/SConscript b/source/blender/blenloader/SConscript
index b3cb98abb9b..f00f765bba4 100644
--- a/source/blender/blenloader/SConscript
+++ b/source/blender/blenloader/SConscript
@@ -4,7 +4,7 @@ Import ('env')
sources = env.Glob('intern/*.c')
incs = '. #/intern/guardedalloc ../blenlib ../blenkernel'
-incs += ' ../makesdna ../readblenfile ../editors/include'
+incs += ' ../makesdna ../editors/include'
incs += ' ../render/extern/include ../makesrna ../bmesh'
incs += ' ' + env['BF_ZLIB_INC']
diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c
index 39fab1929da..214f637ea6c 100644
--- a/source/blender/blenloader/intern/readblenentry.c
+++ b/source/blender/blenloader/intern/readblenentry.c
@@ -62,8 +62,6 @@
#include "readfile.h"
-#include "BLO_readblenfile.h"
-
#include "BLO_sys_types.h" // needed for intptr_t
#ifdef _WIN32
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index ddbbf64241f..fb4d99b95bc 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -139,7 +139,6 @@
//XXX #include "BIF_previewrender.h" // bedlelvel, for struct RenderInfo
#include "BLO_readfile.h"
#include "BLO_undofile.h"
-#include "BLO_readblenfile.h" // streaming read pipe, for BLO_readblenfile BLO_readblenfilememory
#include "readfile.h"
diff --git a/source/blender/readblenfile/intern/BLO_readblenfile.c b/source/blender/blenloader/intern/runtime.c
index 351de4bd215..f5308b5ea5c 100644
--- a/source/blender/readblenfile/intern/BLO_readblenfile.c
+++ b/source/blender/blenloader/intern/runtime.c
@@ -27,11 +27,13 @@
* ***** END GPL LICENSE BLOCK *****
*
*/
+
/**
- * \file BLO_readblenfile.c
- * \brief This file handles the loading if .blend files
- * \ingroup blo
+ * \file runtime.c
+ * \brief This file handles the loading of .blend files embedded in runtimes
+ * \ingroup blenloader
*/
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -46,90 +48,56 @@
#endif
#include "BLO_readfile.h"
-#include "BLO_readblenfile.h"
+#include "BLO_runtime.h"
#include "BKE_blender.h"
#include "BKE_report.h"
+#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
-/** Magic number for the file header */
-const char *headerMagic = "BLENDFI";
-
-/**
- * \brief Set the version number into the array.
- *
- * version contains the integer number of the version
- * i.e. 227
- * array[1] gets set to the div of the number by 100 i.e. 2
- * array[2] gets the remainder i.e. 27
- */
-void BLO_setversionnumber(char array[4], int version)
-{
- memset(array, 0, sizeof(char)*4);
-
- array[1] = version / 100;
- array[2] = version % 100;
-}
-
-/**
- * Sets version number using BLENDER_VERSION
- * Function that calls the setversionnumber(char[],int) with
- * the BLENDER_VERSION constant and sets the resultant array
- * with the version parts.
- * see BLO_setversionnumber(char[],int).
- */
-void BLO_setcurrentversionnumber(char array[4])
-{
- BLO_setversionnumber(array, BLENDER_VERSION);
-}
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
/* Runtime reading */
-static int handle_read_msb_int(int handle) {
+static int handle_read_msb_int(int handle)
+{
unsigned char buf[4];
- if (read(handle, buf, 4)!=4)
+ if(read(handle, buf, 4) != 4)
return -1;
- else
- return (buf[0]<<24) + (buf[1]<<16) + (buf[2]<<8) + (buf[3]<<0);
+
+ return (buf[0]<<24) + (buf[1]<<16) + (buf[2]<<8) + (buf[3]<<0);
}
-int blo_is_a_runtime(char *path) {
+int BLO_is_a_runtime(char *path)
+{
int res= 0, fd= open(path, O_BINARY|O_RDONLY, 0);
int datastart;
char buf[8];
- if (fd==-1)
+ if(fd==-1)
goto cleanup;
lseek(fd, -12, SEEK_END);
datastart= handle_read_msb_int(fd);
- if (datastart==-1)
+
+ if(datastart==-1)
goto cleanup;
- else if (read(fd, buf, 8)!=8)
+ else if(read(fd, buf, 8)!=8)
goto cleanup;
- else if (memcmp(buf, "BRUNTIME", 8)!=0)
+ else if(memcmp(buf, "BRUNTIME", 8)!=0)
goto cleanup;
else
res= 1;
cleanup:
- if (fd!=-1)
+ if(fd!=-1)
close(fd);
return res;
}
-BlendFileData *
-blo_read_runtime(
- char *path,
- ReportList *reports)
+BlendFileData *BLO_read_runtime(char *path, ReportList *reports)
{
BlendFileData *bfd= NULL;
size_t actualsize;
@@ -137,7 +105,8 @@ blo_read_runtime(
char buf[8];
fd= open(path, O_BINARY|O_RDONLY, 0);
- if (fd==-1) {
+
+ if(fd==-1) {
BKE_reportf(reports, RPT_ERROR, "Unable to open \"%s\": %s.", path, strerror(errno));
goto cleanup;
}
@@ -147,16 +116,20 @@ blo_read_runtime(
lseek(fd, -12, SEEK_END);
datastart= handle_read_msb_int(fd);
- if (datastart==-1) {
+
+ if(datastart==-1) {
BKE_reportf(reports, RPT_ERROR, "Unable to read \"%s\" (problem seeking)", path);
goto cleanup;
- } else if (read(fd, buf, 8)!=8) {
+ }
+ else if(read(fd, buf, 8)!=8) {
BKE_reportf(reports, RPT_ERROR, "Unable to read \"%s\" (truncated header)", path);
goto cleanup;
- } else if (memcmp(buf, "BRUNTIME", 8)!=0) {
+ }
+ else if(memcmp(buf, "BRUNTIME", 8)!=0) {
BKE_reportf(reports, RPT_ERROR, "Unable to read \"%s\" (not a blend file)", path);
goto cleanup;
- } else {
+ }
+ else {
//printf("starting to read runtime from %s at datastart %d\n", path, datastart);
lseek(fd, datastart, SEEK_SET);
bfd = blo_read_blendafterruntime(fd, path, actualsize-datastart, reports);
@@ -164,7 +137,7 @@ blo_read_runtime(
}
cleanup:
- if (fd!=-1)
+ if(fd!=-1)
close(fd);
return bfd;
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c
index 1d235f83186..ee39e0fff26 100644
--- a/source/blender/editors/physics/particle_edit.c
+++ b/source/blender/editors/physics/particle_edit.c
@@ -2521,80 +2521,6 @@ static void toggle_particle_cursor(bContext *C, int enable)
pset->paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), PE_poll_view3d, brush_drawcursor, NULL);
}
-/********************* radial control operator *********************/
-
-static int brush_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
- ParticleBrushData *brush;
- int mode = RNA_enum_get(op->ptr, "mode");
- float original_value=1.0f;
-
- if(pset->brushtype < 0)
- return OPERATOR_CANCELLED;
-
- brush= &pset->brush[pset->brushtype];
-
- toggle_particle_cursor(C, 0);
-
- if(mode == WM_RADIALCONTROL_SIZE)
- original_value = brush->size;
- else if(mode == WM_RADIALCONTROL_STRENGTH)
- original_value = brush->strength;
-
- RNA_float_set(op->ptr, "initial_value", original_value);
-
- return WM_radial_control_invoke(C, op, event);
-}
-
-static int brush_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
-{
- int ret = WM_radial_control_modal(C, op, event);
-
- if(ret != OPERATOR_RUNNING_MODAL)
- toggle_particle_cursor(C, 1);
-
- return ret;
-}
-
-static int brush_radial_control_exec(bContext *C, wmOperator *op)
-{
- ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
- ParticleBrushData *brush;
- int mode = RNA_enum_get(op->ptr, "mode");
- float new_value = RNA_float_get(op->ptr, "new_value");
-
- if(pset->brushtype < 0)
- return OPERATOR_CANCELLED;
-
- brush= &pset->brush[pset->brushtype];
-
- if(mode == WM_RADIALCONTROL_SIZE)
- brush->size= new_value;
- else if(mode == WM_RADIALCONTROL_STRENGTH)
- brush->strength= new_value;
-
- WM_event_add_notifier(C, NC_WINDOW, NULL);
-
- return OPERATOR_FINISHED;
-}
-
-void PARTICLE_OT_brush_radial_control(wmOperatorType *ot)
-{
- WM_OT_radial_control_partial(ot);
-
- ot->name= "Brush Radial Control";
- ot->idname= "PARTICLE_OT_brush_radial_control";
-
- ot->invoke= brush_radial_control_invoke;
- ot->modal= brush_radial_control_modal;
- ot->exec= brush_radial_control_exec;
- ot->poll= PE_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-}
-
/*************************** delete operator **************************/
enum { DEL_PARTICLE, DEL_KEY };
diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h
index d447da3f8c4..71f1128baf0 100644
--- a/source/blender/editors/physics/physics_intern.h
+++ b/source/blender/editors/physics/physics_intern.h
@@ -60,7 +60,6 @@ void PARTICLE_OT_delete(struct wmOperatorType *ot);
void PARTICLE_OT_mirror(struct wmOperatorType *ot);
void PARTICLE_OT_brush_edit(struct wmOperatorType *ot);
-void PARTICLE_OT_brush_radial_control(struct wmOperatorType *ot);
void PARTICLE_OT_particle_edit_toggle(struct wmOperatorType *ot);
void PARTICLE_OT_edited_clear(struct wmOperatorType *ot);
diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c
index 02b2fad7a00..aafa5a185ed 100644
--- a/source/blender/editors/physics/physics_ops.c
+++ b/source/blender/editors/physics/physics_ops.c
@@ -66,7 +66,6 @@ static void operatortypes_particle(void)
WM_operatortype_append(PARTICLE_OT_mirror);
WM_operatortype_append(PARTICLE_OT_brush_edit);
- WM_operatortype_append(PARTICLE_OT_brush_radial_control);
WM_operatortype_append(PARTICLE_OT_particle_edit_toggle);
WM_operatortype_append(PARTICLE_OT_edited_clear);
@@ -91,6 +90,7 @@ static void operatortypes_particle(void)
static void keymap_particle(wmKeyConfig *keyconf)
{
+ wmKeyMapItem *kmi;
wmKeyMap *keymap;
keymap= WM_keymap_find(keyconf, "Particle", 0, 0);
@@ -112,8 +112,14 @@ static void keymap_particle(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
+
+ /* size radial control */
+ kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0);
+ RNA_string_set(kmi->ptr, "data_path", "tool_settings.particle_edit.brush.size");
+
+ /* size radial control */
+ kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_string_set(kmi->ptr, "data_path", "tool_settings.particle_edit.brush.strength");
WM_keymap_add_menu(keymap, "VIEW3D_MT_particle_specials", WKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 717d77e65b8..2b8f4e6f308 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -5092,56 +5092,6 @@ void ED_space_image_paint_update(wmWindowManager *wm, ToolSettings *settings)
}
}
-/* ************ image paint radial control *************/
-static int paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- float zoom;
- ToolSettings *ts = CTX_data_scene(C)->toolsettings;
- get_imapaint_zoom(C, &zoom, &zoom);
- toggle_paint_cursor(C, 0);
- brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), zoom);
- return WM_radial_control_invoke(C, op, event);
-}
-
-static int paint_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
-{
- int ret = WM_radial_control_modal(C, op, event);
- if(ret != OPERATOR_RUNNING_MODAL)
- toggle_paint_cursor(C, 1);
- return ret;
-}
-
-static int paint_radial_control_exec(bContext *C, wmOperator *op)
-{
- Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint);
- float zoom;
- int ret;
- char str[64];
- get_imapaint_zoom(C, &zoom, &zoom);
- ret = brush_radial_control_exec(op, brush, 1.0f / zoom);
- WM_radial_control_string(op, str, sizeof(str));
-
- WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
-
- return ret;
-}
-
-void PAINT_OT_image_paint_radial_control(wmOperatorType *ot)
-{
- WM_OT_radial_control_partial(ot);
-
- ot->name= "Image Paint Radial Control";
- ot->idname= "PAINT_OT_image_paint_radial_control";
-
- ot->invoke= paint_radial_control_invoke;
- ot->modal= paint_radial_control_modal;
- ot->exec= paint_radial_control_exec;
- ot->poll= image_paint_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-}
-
/************************ grab clone operator ************************/
typedef struct GrabClone {
@@ -5469,28 +5419,6 @@ void PAINT_OT_texture_paint_toggle(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-/************* texture paint radial control *************/
-
-static int texture_paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- ToolSettings *ts = CTX_data_scene(C)->toolsettings;
- toggle_paint_cursor(C, !ts->imapaint.paintcursor);
- brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 1);
- return WM_radial_control_invoke(C, op, event);
-}
-
-static int texture_paint_radial_control_exec(bContext *C, wmOperator *op)
-{
- Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint);
- int ret = brush_radial_control_exec(op, brush, 1);
- char str[64];
- WM_radial_control_string(op, str, sizeof(str));
-
- WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
-
- return ret;
-}
-
static int texture_paint_poll(bContext *C)
{
if(texture_paint_toggle_poll(C))
@@ -5505,23 +5433,6 @@ int image_texture_paint_poll(bContext *C)
return (texture_paint_poll(C) || image_paint_poll(C));
}
-void PAINT_OT_texture_paint_radial_control(wmOperatorType *ot)
-{
- WM_OT_radial_control_partial(ot);
-
- ot->name= "Texture Paint Radial Control";
- ot->idname= "PAINT_OT_texture_paint_radial_control";
-
- ot->invoke= texture_paint_radial_control_invoke;
- ot->modal= paint_radial_control_modal;
- ot->exec= texture_paint_radial_control_exec;
- ot->poll= texture_paint_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-}
-
-
int facemask_paint_poll(bContext *C)
{
return paint_facesel_test(CTX_data_active_object(C));
diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h
index 48fca04ac87..ba7235a3161 100644
--- a/source/blender/editors/sculpt_paint/paint_intern.h
+++ b/source/blender/editors/sculpt_paint/paint_intern.h
@@ -81,12 +81,10 @@ void vpaint_fill(struct Object *ob, unsigned int paintcol);
void wpaint_fill(struct VPaint *wp, struct Object *ob, float paintweight);
void PAINT_OT_weight_paint_toggle(struct wmOperatorType *ot);
-void PAINT_OT_weight_paint_radial_control(struct wmOperatorType *ot);
void PAINT_OT_weight_paint(struct wmOperatorType *ot);
void PAINT_OT_weight_set(struct wmOperatorType *ot);
void PAINT_OT_weight_from_bones(struct wmOperatorType *ot);
-void PAINT_OT_vertex_paint_radial_control(struct wmOperatorType *ot);
void PAINT_OT_vertex_paint_toggle(struct wmOperatorType *ot);
void PAINT_OT_vertex_paint(struct wmOperatorType *ot);
@@ -96,12 +94,10 @@ unsigned int vpaint_get_current_col(struct VPaint *vp);
int image_texture_paint_poll(struct bContext *C);
void PAINT_OT_image_paint(struct wmOperatorType *ot);
-void PAINT_OT_image_paint_radial_control(struct wmOperatorType *ot);
void PAINT_OT_grab_clone(struct wmOperatorType *ot);
void PAINT_OT_sample_color(struct wmOperatorType *ot);
void PAINT_OT_clone_cursor_set(struct wmOperatorType *ot);
void PAINT_OT_texture_paint_toggle(struct wmOperatorType *ot);
-void PAINT_OT_texture_paint_radial_control(struct wmOperatorType *ot);
void PAINT_OT_project_image(struct wmOperatorType *ot);
void PAINT_OT_image_from_view(struct wmOperatorType *ot);
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c
index 9a1de939067..e4a21b1f1a7 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -23,7 +23,10 @@
* \ingroup edsculpt
*/
+#include "MEM_guardedalloc.h"
+#include <stdlib.h>
+#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DNA_object_types.h"
@@ -355,9 +358,7 @@ void ED_operatortypes_paint(void)
/* image */
WM_operatortype_append(PAINT_OT_texture_paint_toggle);
- WM_operatortype_append(PAINT_OT_texture_paint_radial_control);
WM_operatortype_append(PAINT_OT_image_paint);
- WM_operatortype_append(PAINT_OT_image_paint_radial_control);
WM_operatortype_append(PAINT_OT_sample_color);
WM_operatortype_append(PAINT_OT_grab_clone);
WM_operatortype_append(PAINT_OT_clone_cursor_set);
@@ -366,13 +367,11 @@ void ED_operatortypes_paint(void)
/* weight */
WM_operatortype_append(PAINT_OT_weight_paint_toggle);
- WM_operatortype_append(PAINT_OT_weight_paint_radial_control);
WM_operatortype_append(PAINT_OT_weight_paint);
WM_operatortype_append(PAINT_OT_weight_set);
WM_operatortype_append(PAINT_OT_weight_from_bones);
/* vertex */
- WM_operatortype_append(PAINT_OT_vertex_paint_radial_control);
WM_operatortype_append(PAINT_OT_vertex_paint_toggle);
WM_operatortype_append(PAINT_OT_vertex_paint);
WM_operatortype_append(PAINT_OT_vertex_color_set);
@@ -464,6 +463,59 @@ static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *UNUSED(path
RNA_float_set(kmi->ptr, "scalar", 10.0/9.0); // 1.1111....
}
+typedef enum {
+ RC_COLOR = 1,
+ RC_ROTATION = 2,
+ RC_ZOOM = 4,
+} RCFlags;
+
+static void set_brush_rc_path(PointerRNA *ptr, const char *brush_path,
+ const char *output_name, const char *input_name)
+{
+ char *path;
+
+ path = BLI_sprintfN("%s.%s", brush_path, input_name);
+ RNA_string_set(ptr, output_name, path);
+ MEM_freeN(path);
+}
+
+static void set_brush_rc_props(PointerRNA *ptr, const char *paint,
+ const char *prop, RCFlags flags)
+{
+ char *brush_path;
+
+ brush_path = BLI_sprintfN("tool_settings.%s.brush", paint);
+
+ set_brush_rc_path(ptr, brush_path, "data_path", prop);
+ set_brush_rc_path(ptr, brush_path, "color_path", "cursor_color_add");
+ set_brush_rc_path(ptr, brush_path, "rotation_path", "texture_slot.angle");
+ RNA_string_set(ptr, "image_id", brush_path);
+
+ if(flags & RC_COLOR)
+ set_brush_rc_path(ptr, brush_path, "fill_color_path", "color");
+ if(flags & RC_ZOOM)
+ RNA_string_set(ptr, "zoom_path", "space_data.zoom");
+
+ MEM_freeN(brush_path);
+}
+
+static void ed_keymap_paint_brush_radial_control(wmKeyMap *keymap, const char *paint,
+ RCFlags flags)
+{
+ wmKeyMapItem *kmi;
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0);
+ set_brush_rc_props(kmi->ptr, paint, "size", flags);
+
+ kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0);
+ set_brush_rc_props(kmi->ptr, paint, "strength", flags);
+
+ if(flags & RC_ROTATION) {
+ kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0);
+ set_brush_rc_props(kmi->ptr, paint, "texture_slot.angle", flags);
+ }
+}
+
void ED_keymap_paint(wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
@@ -474,10 +526,6 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "Sculpt", 0, 0);
keymap->poll= sculpt_poll;
- RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
- RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_RADIALCONTROL_ANGLE);
-
RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", BRUSH_STROKE_NORMAL);
RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", BRUSH_STROKE_INVERT);
RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", BRUSH_STROKE_SMOOTH);
@@ -496,6 +544,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
ed_keymap_paint_brush_switch(keymap, "sculpt");
ed_keymap_paint_brush_size(keymap, "tool_settings.sculpt.brush.size");
+ ed_keymap_paint_brush_radial_control(keymap, "sculpt", RC_ROTATION);
RNA_enum_set(WM_keymap_add_item(keymap, "BRUSH_OT_sculpt_tool_set", DKEY, KM_PRESS, 0, 0)->ptr, "tool", SCULPT_TOOL_DRAW);
RNA_enum_set(WM_keymap_add_item(keymap, "BRUSH_OT_sculpt_tool_set", SKEY, KM_PRESS, 0, 0)->ptr, "tool", SCULPT_TOOL_SMOOTH);
@@ -521,8 +570,6 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0);
keymap->poll= vertex_paint_mode_poll;
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
WM_keymap_verify_item(keymap, "PAINT_OT_vertex_paint", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_sample_color", RIGHTMOUSE, KM_PRESS, 0, 0);
@@ -531,6 +578,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
ed_keymap_paint_brush_switch(keymap, "vertex_paint");
ed_keymap_paint_brush_size(keymap, "tool_settings.vertex_paint.brush.size");
+ ed_keymap_paint_brush_radial_control(keymap, "vertex_paint", RC_COLOR);
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */
RNA_string_set(kmi->ptr, "data_path", "vertex_paint_object.data.use_paint_mask");
@@ -539,9 +587,6 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "Weight Paint", 0, 0);
keymap->poll= weight_paint_mode_poll;
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
-
WM_keymap_verify_item(keymap, "PAINT_OT_weight_paint", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap,
@@ -549,6 +594,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
ed_keymap_paint_brush_switch(keymap, "weight_paint");
ed_keymap_paint_brush_size(keymap, "tool_settings.weight_paint.brush.size");
+ ed_keymap_paint_brush_radial_control(keymap, "weight_paint", 0);
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */
RNA_string_set(kmi->ptr, "data_path", "weight_paint_object.data.use_paint_mask");
@@ -559,12 +605,6 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
keymap= WM_keymap_find(keyconf, "Image Paint", 0, 0);
keymap->poll= image_texture_paint_poll;
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
-
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_texture_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
- RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_texture_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
-
WM_keymap_add_item(keymap, "PAINT_OT_image_paint", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_grab_clone", RIGHTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_sample_color", RIGHTMOUSE, KM_PRESS, 0, 0);
@@ -572,6 +612,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
ed_keymap_paint_brush_switch(keymap, "image_paint");
ed_keymap_paint_brush_size(keymap, "tool_settings.image_paint.brush.size");
+ ed_keymap_paint_brush_radial_control(keymap, "image_paint", RC_COLOR|RC_ZOOM);
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */
RNA_string_set(kmi->ptr, "data_path", "image_paint_object.data.use_paint_mask");
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 4f77ecf8287..cc3ee805a8b 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1205,110 +1205,6 @@ void PAINT_OT_weight_paint_toggle(wmOperatorType *ot)
}
-/* ************ paint radial controls *************/
-
-static int vpaint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- Paint *p = paint_get_active(CTX_data_scene(C));
- Brush *brush = paint_brush(p);
- float col[4];
-
- WM_paint_cursor_end(CTX_wm_manager(C), p->paint_cursor);
- p->paint_cursor = NULL;
- brush_radial_control_invoke(op, brush, 1);
-
- copy_v3_v3(col, brush->add_col);
- col[3]= 0.5f;
- RNA_float_set_array(op->ptr, "color", col);
-
- return WM_radial_control_invoke(C, op, event);
-}
-
-static int vpaint_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
-{
- int ret = WM_radial_control_modal(C, op, event);
- if(ret != OPERATOR_RUNNING_MODAL)
- paint_cursor_start(C, vertex_paint_poll);
- return ret;
-}
-
-static int vpaint_radial_control_exec(bContext *C, wmOperator *op)
-{
- Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->vpaint->paint);
- int ret = brush_radial_control_exec(op, brush, 1);
-
- WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
-
- return ret;
-}
-
-static int wpaint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- Paint *p = paint_get_active(CTX_data_scene(C));
- Brush *brush = paint_brush(p);
- float col[4];
-
- WM_paint_cursor_end(CTX_wm_manager(C), p->paint_cursor);
- p->paint_cursor = NULL;
- brush_radial_control_invoke(op, brush, 1);
-
- copy_v3_v3(col, brush->add_col);
- col[3]= 0.5f;
- RNA_float_set_array(op->ptr, "color", col);
-
- return WM_radial_control_invoke(C, op, event);
-}
-
-static int wpaint_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
-{
- int ret = WM_radial_control_modal(C, op, event);
- if(ret != OPERATOR_RUNNING_MODAL)
- paint_cursor_start(C, weight_paint_poll);
- return ret;
-}
-
-static int wpaint_radial_control_exec(bContext *C, wmOperator *op)
-{
- Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->wpaint->paint);
- int ret = brush_radial_control_exec(op, brush, 1);
-
- WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
-
- return ret;
-}
-
-void PAINT_OT_weight_paint_radial_control(wmOperatorType *ot)
-{
- WM_OT_radial_control_partial(ot);
-
- ot->name= "Weight Paint Radial Control";
- ot->idname= "PAINT_OT_weight_paint_radial_control";
-
- ot->invoke= wpaint_radial_control_invoke;
- ot->modal= wpaint_radial_control_modal;
- ot->exec= wpaint_radial_control_exec;
- ot->poll= weight_paint_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-}
-
-void PAINT_OT_vertex_paint_radial_control(wmOperatorType *ot)
-{
- WM_OT_radial_control_partial(ot);
-
- ot->name= "Vertex Paint Radial Control";
- ot->idname= "PAINT_OT_vertex_paint_radial_control";
-
- ot->invoke= vpaint_radial_control_invoke;
- ot->modal= vpaint_radial_control_modal;
- ot->exec= vpaint_radial_control_exec;
- ot->poll= vertex_paint_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-}
-
/* ************ weight paint operator ********** */
struct WPaintData {
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index c8f63e871b4..0f514ff4e8f 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -2837,65 +2837,6 @@ static const char *sculpt_tool_name(Sculpt *sd)
}
}
-/**** Radial control ****/
-static int sculpt_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- Paint *p = paint_get_active(CTX_data_scene(C));
- Brush *brush = paint_brush(p);
- float col[4], tex_col[4];
-
- WM_paint_cursor_end(CTX_wm_manager(C), p->paint_cursor);
- p->paint_cursor = NULL;
- brush_radial_control_invoke(op, brush, 1);
-
- if((brush->flag & BRUSH_DIR_IN) && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH))
- copy_v3_v3(col, brush->sub_col);
- else
- copy_v3_v3(col, brush->add_col);
- col[3]= 0.5f;
-
- copy_v3_v3(tex_col, U.sculpt_paint_overlay_col);
- tex_col[3]= (brush->texture_overlay_alpha / 100.0f);
-
- RNA_float_set_array(op->ptr, "color", col);
- RNA_float_set_array(op->ptr, "texture_color", tex_col);
-
- return WM_radial_control_invoke(C, op, event);
-}
-
-static int sculpt_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
-{
- int ret = WM_radial_control_modal(C, op, event);
- if(ret != OPERATOR_RUNNING_MODAL)
- paint_cursor_start(C, sculpt_poll);
- return ret;
-}
-
-static int sculpt_radial_control_exec(bContext *C, wmOperator *op)
-{
- Brush *brush = paint_brush(&CTX_data_tool_settings(C)->sculpt->paint);
- int ret = brush_radial_control_exec(op, brush, 1);
-
- WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
-
- return ret;
-}
-
-static void SCULPT_OT_radial_control(wmOperatorType *ot)
-{
- WM_OT_radial_control_partial(ot);
-
- ot->name= "Sculpt Radial Control";
- ot->idname= "SCULPT_OT_radial_control";
-
- ot->invoke= sculpt_radial_control_invoke;
- ot->modal= sculpt_radial_control_modal;
- ot->exec= sculpt_radial_control_exec;
- ot->poll= sculpt_poll;
-
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
-}
-
/**** Operator for applying a stroke (various attributes including mouse path)
using the current brush. ****/
@@ -3784,7 +3725,6 @@ static void SCULPT_OT_sculptmode_toggle(wmOperatorType *ot)
void ED_operatortypes_sculpt(void)
{
- WM_operatortype_append(SCULPT_OT_radial_control);
WM_operatortype_append(SCULPT_OT_brush_stroke);
WM_operatortype_append(SCULPT_OT_sculptmode_toggle);
WM_operatortype_append(SCULPT_OT_set_persistent_base);
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index fe0b0b7c928..66f5ac18fbf 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -998,10 +998,14 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
y2= viewborder.ymax;
/* apply offsets so the real 3D camera shows through */
- x1i= (int)(x1 - 1.0f);
- y1i= (int)(y1 - 1.0f);
- x2i= (int)(x2 + 1.0f);
- y2i= (int)(y2 + 1.0f);
+
+ /* note: quite un-scientific but without this bit extra
+ * 0.0001 on the lower left the 2D border sometimes
+ * obscures the 3D camera border */
+ x1i= (int)(x1 - 1.0001f);
+ y1i= (int)(y1 - 1.0001f);
+ x2i= (int)(x2 + (1.0f-0.0001f));
+ y2i= (int)(y2 + (1.0f-0.0001f));
/* passepartout, specified in camera edit buttons */
if (ca && (ca->flag & CAM_SHOWPASSEPARTOUT) && ca->passepartalpha > 0.000001f) {
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index 769f0ad17db..623a0fc1038 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -317,10 +317,4 @@ typedef struct wmOperator {
/* wmOperator flag */
#define OP_GRAB_POINTER 1
-typedef enum wmRadialControlMode {
- WM_RADIALCONTROL_SIZE,
- WM_RADIALCONTROL_STRENGTH,
- WM_RADIALCONTROL_ANGLE
-} wmRadialControlMode;
-
#endif /* DNA_WINDOWMANAGER_TYPES_H */
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index ce018fdfd6e..da536f95cba 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -481,12 +481,12 @@ static void rna_def_particle_edit(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "ParticleBrushData");
RNA_def_struct_ui_text(srna, "Particle Brush", "Particle editing brush");
- prop= RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE);
RNA_def_property_range(prop, 1, SHRT_MAX);
RNA_def_property_ui_range(prop, 1, 100, 10, 3);
RNA_def_property_ui_text(prop, "Radius", "Radius of the brush in pixels");
- prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_range(prop, 0.001, 1.0);
RNA_def_property_ui_text(prop, "Strength", "Brush strength");
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index 922c68f45bd..974f2fdecb8 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -212,7 +212,7 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "strength");
RNA_def_property_range(prop, 0.0, 10.0);
RNA_def_property_ui_range(prop, 0.0, 10.0, 1, 2);
- RNA_def_property_ui_text(prop, "Strength", "Strength of wavelet noise");
+ RNA_def_property_ui_text(prop, "Strength", "Strength of noise");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "dissolve_speed", PROP_INT, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 59824d6a752..5281e152d54 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -508,6 +508,27 @@ static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *C, P
return item;
}
+static void rna_SpaceImageEditor_zoom_get(PointerRNA *ptr, float *values)
+{
+ SpaceImage *sima= (SpaceImage*)ptr->data;
+ ScrArea *sa;
+ ARegion *ar;
+
+ values[0] = values[1] = 1;
+
+ sa = rna_area_from_space(ptr);
+ if(!sa) return;
+
+ /* find aregion */
+ for(ar=sa->regionbase.first; ar; ar=ar->next) {
+ if(ar->regiontype == RGN_TYPE_WINDOW)
+ break;
+ }
+ if(!ar) return;
+
+ ED_space_image_zoom(sima, ar, &values[0], &values[1]);
+}
+
static void rna_SpaceImageEditor_cursor_location_get(PointerRNA *ptr, float *values)
{
SpaceImage *sima= (SpaceImage*)ptr->data;
@@ -1556,6 +1577,12 @@ static void rna_def_space_image(BlenderRNA *brna)
RNA_def_property_pointer_sdna(prop, NULL, "sample_line_hist");
RNA_def_property_struct_type(prop, "Histogram");
RNA_def_property_ui_text(prop, "Line sample", "Sampled colors along line");
+
+ prop= RNA_def_property(srna, "zoom", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_float_funcs(prop, "rna_SpaceImageEditor_zoom_get", NULL, NULL);
+ RNA_def_property_ui_text(prop, "Zoom", "Zoom factor");
/* image draw */
prop= RNA_def_property(srna, "show_repeat", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/readblenfile/BLO_readblenfile.h b/source/blender/readblenfile/BLO_readblenfile.h
deleted file mode 100644
index 9b4e15165f5..00000000000
--- a/source/blender/readblenfile/BLO_readblenfile.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- *
- */
-
-#ifndef BLO_READBLENFILE_H
-#define BLO_READBLENFILE_H
-
-/** \file BLO_readblenfile.h
- * \ingroup blo
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct ReportList;
-
- BlendFileData *
-BLO_readblenfilename(
- char *fileName,
- struct ReportList *reports);
-
- BlendFileData *
-BLO_readblenfilehandle(
- int fileHandle,
- struct ReportList *reports);
-
- BlendFileData *
-BLO_readblenfilememory(
- char *fromBuffer,
- int fromBufferSize,
- struct ReportList *reports);
-
-
- void
-BLO_setcurrentversionnumber(
- char array[4]);
-
- void
-BLO_setversionnumber(
- char array[4],
- int version);
-
- int
-blo_is_a_runtime(
- char *file);
-
- BlendFileData *
-blo_read_runtime(
- char *file,
- struct ReportList *reports);
-
-#define BLO_RESERVEDSIZE 12
-extern const char *headerMagic;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* BLO_READBLENFILE_H */
-
diff --git a/source/blender/readblenfile/CMakeLists.txt b/source/blender/readblenfile/CMakeLists.txt
deleted file mode 100644
index 9b869d39697..00000000000
--- a/source/blender/readblenfile/CMakeLists.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-# $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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# The Original Code is Copyright (C) 2006, Blender Foundation
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): Jacques Beaurain.
-#
-# ***** END GPL LICENSE BLOCK *****
-
-set(INC
- .
- ../blenloader
- ../blenloader/intern
- ../blenkernel
- ../blenlib
- ../makesdna
-)
-
-set(SRC
- intern/BLO_readblenfile.c
-
- BLO_readblenfile.h
-)
-
-blender_add_lib(bf_readblenfile "${SRC}" "${INC}")
diff --git a/source/blender/readblenfile/SConscript b/source/blender/readblenfile/SConscript
deleted file mode 100644
index 07f84eb52d5..00000000000
--- a/source/blender/readblenfile/SConscript
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/python
-Import ('env')
-
-sources = env.Glob('intern/*.c')
-
-incs = '. ../blenloader ../blenloader/intern ../blenkernel ../blenlib ../makesdna'
-
-env.BlenderLib ( 'bf_readblenfile', sources, Split(incs), [], libtype=['core','player'], priority = [0,5] )
diff --git a/source/blender/readblenfile/stub/BLO_readblenfileSTUB.c b/source/blender/readblenfile/stub/BLO_readblenfileSTUB.c
deleted file mode 100644
index 0f3541b510d..00000000000
--- a/source/blender/readblenfile/stub/BLO_readblenfileSTUB.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * $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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- *
- */
-
-/** \file blender/readblenfile/stub/BLO_readblenfileSTUB.c
- * \ingroup blo
- */
-
-
-#include <stdio.h>
-
-int BLO_readblenfilememory( char *fromBuffer, int fromBufferSize);
-int BLO_readblenfilename( char *fileName);
-int BLO_readblenfilehandle( int fileHandle);
-int BLO_is_a_runtime( char *file);
-int BLO_read_runtime( char *file);
-
- int
-BLO_readblenfilememory(
- char *fromBuffer, int fromBufferSize)
-{
-#if defined(DEBUG)
- fprintf(stderr,
- "Error BLO_readblenfilename is a stub\n");
-#endif
- return(1);
-}
-
- int
-BLO_readblenfilename(
- char *fileName)
-{
-#if defined(DEBUG)
- fprintf(stderr,
- "Error BLO_readblenfilename is a stub\n");
-#endif
- return(1);
-}
-
- int
-BLO_readblenfilehandle(
- int fileHandle)
-{
-#if defined(DEBUG)
- fprintf(stderr,
- "Error BLO_readblenfilehandle is a stub\n");
-#endif
- return(1);
-}
-
- int
-BLO_is_a_runtime(
- char *file)
-{
-#if defined(DEBUG)
- fprintf(stderr,
- "Error BLO_is_a_runtime is a stub\n");
-#endif
- return 0;
-}
-
- int
-BLO_read_runtime(
- char *file)
-{
-#if defined(DEBUG)
- fprintf(stderr,
- "Error BLO_read_runtime is a stub\n");
-#endif
- return 0;
-}
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 1b4fff8cd13..58645f48787 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -293,12 +293,6 @@ struct wmGesture *WM_gesture_new(struct bContext *C, struct wmEvent *event, int
void WM_gesture_end(struct bContext *C, struct wmGesture *gesture);
void WM_gestures_remove(struct bContext *C);
- /* radial control operator */
-int WM_radial_control_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
-int WM_radial_control_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
-void WM_OT_radial_control_partial(struct wmOperatorType *ot);
-void WM_radial_control_string(struct wmOperator *op, char str[], int maxlen);
-
/* fileselecting support */
void WM_event_add_fileselect(struct bContext *C, struct wmOperator *op);
void WM_event_fileselect_event(struct bContext *C, void *ophandle, int eventval);
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index d32a26549e7..fa693752ff7 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -61,6 +61,7 @@
#include "BLO_readfile.h"
#include "BKE_blender.h"
+#include "BKE_brush.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
#include "BKE_idprop.h"
@@ -2674,272 +2675,465 @@ void WM_OT_straightline_gesture(wmOperatorType *ot)
static const int WM_RADIAL_CONTROL_DISPLAY_SIZE = 200;
-typedef struct wmRadialControl {
- int mode;
- float initial_value, value, max_value;
- float col[4], tex_col[4];
+typedef struct {
+ PropertyType type;
+ PropertySubType subtype;
+ PointerRNA ptr, col_ptr, fill_col_ptr, rot_ptr, zoom_ptr, image_id_ptr;
+ PropertyRNA *prop, *col_prop, *fill_col_prop, *rot_prop, *zoom_prop;
+ StructRNA *image_id_srna;
+ float initial_value, current_value, min_value, max_value;
int initial_mouse[2];
+ unsigned int gltex;
+ ListBase orig_paintcursors;
void *cursor;
- GLuint tex;
-} wmRadialControl;
+} RadialControl;
-static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata)
+static void radial_control_set_initial_mouse(RadialControl *rc, wmEvent *event)
{
- wmRadialControl *rc = (wmRadialControl*)customdata;
- ARegion *ar = CTX_wm_region(C);
- float r1=0.0f, r2=0.0f, r3=0.0f, angle=0.0f;
+ float d[2] = {0, 0};
+ float zoom[2] = {1, 1};
- // int hit = 0;
-
- if(rc->mode == WM_RADIALCONTROL_STRENGTH)
- rc->tex_col[3]= (rc->value + 0.5f);
+ rc->initial_mouse[0]= event->x;
+ rc->initial_mouse[1]= event->y;
- if(rc->mode == WM_RADIALCONTROL_SIZE) {
- r1= rc->value;
- r2= rc->initial_value;
- r3= r1;
- } else if(rc->mode == WM_RADIALCONTROL_STRENGTH) {
- r1= (1 - rc->value) * WM_RADIAL_CONTROL_DISPLAY_SIZE;
- r2= r3= (float)WM_RADIAL_CONTROL_DISPLAY_SIZE;
- } else if(rc->mode == WM_RADIALCONTROL_ANGLE) {
- r1= r2= r3= (float)WM_RADIAL_CONTROL_DISPLAY_SIZE;
- angle = rc->value;
+ switch(rc->subtype) {
+ case PROP_DISTANCE:
+ d[0] = rc->initial_value;
+ break;
+ case PROP_FACTOR:
+ d[0] = WM_RADIAL_CONTROL_DISPLAY_SIZE * (1 - rc->initial_value);
+ break;
+ case PROP_ANGLE:
+ d[0] = WM_RADIAL_CONTROL_DISPLAY_SIZE * cos(rc->initial_value);
+ d[1] = WM_RADIAL_CONTROL_DISPLAY_SIZE * sin(rc->initial_value);
+ break;
+ default:
+ return;
}
- /* Keep cursor in the original place */
- x = rc->initial_mouse[0] - ar->winrct.xmin;
- y = rc->initial_mouse[1] - ar->winrct.ymin;
+ if(rc->zoom_prop) {
+ RNA_property_float_get_array(&rc->zoom_ptr, rc->zoom_prop, zoom);
+ d[0] *= zoom[0];
+ d[1] *= zoom[1];
+ }
- glTranslatef((float)x, (float)y, 0.0f);
+ rc->initial_mouse[0]-= d[0];
+ rc->initial_mouse[1]-= d[1];
+}
- glEnable(GL_BLEND);
+static void radial_control_set_tex(RadialControl *rc)
+{
+ ImBuf *ibuf;
- if(rc->mode == WM_RADIALCONTROL_ANGLE) {
- glRotatef(angle, 0, 0, 1);
+ switch(RNA_type_to_ID_code(rc->image_id_ptr.type)) {
+ case ID_BR:
+ if((ibuf = brush_gen_radial_control_imbuf(rc->image_id_ptr.data))) {
+ glGenTextures(1, &rc->gltex);
+ glBindTexture(GL_TEXTURE_2D, rc->gltex);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, ibuf->x, ibuf->y, 0,
+ GL_ALPHA, GL_FLOAT, ibuf->rect_float);
+ MEM_freeN(ibuf->rect_float);
+ MEM_freeN(ibuf);
+ }
+ break;
+ default:
+ break;
}
+}
+
+static void radial_control_paint_tex(RadialControl *rc, float radius, float alpha)
+{
+ float col[3] = {0, 0, 0};
+ float rot;
+
+ /* set fill color */
+ if(rc->fill_col_prop)
+ RNA_property_float_get_array(&rc->fill_col_ptr, rc->fill_col_prop, col);
+ glColor4f(col[0], col[1], col[2], alpha);
- if (rc->tex) {
- glBindTexture(GL_TEXTURE_2D, rc->tex);
+ if(rc->gltex) {
+ glBindTexture(GL_TEXTURE_2D, rc->gltex);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ /* set up rotation if available */
+ if(rc->rot_prop) {
+ rot = RNA_property_float_get(&rc->rot_ptr, rc->rot_prop);
+ glPushMatrix();
+ glRotatef(RAD2DEGF(rot), 0, 0, 1);
+ }
+
+ /* draw textured quad */
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
- glColor4fv(rc->tex_col);
glTexCoord2f(0,0);
- glVertex2f(-r3, -r3);
+ glVertex2f(-radius, -radius);
glTexCoord2f(1,0);
- glVertex2f(r3, -r3);
+ glVertex2f(radius, -radius);
glTexCoord2f(1,1);
- glVertex2f(r3, r3);
+ glVertex2f(radius, radius);
glTexCoord2f(0,1);
- glVertex2f(-r3, r3);
+ glVertex2f(-radius, radius);
glEnd();
glDisable(GL_TEXTURE_2D);
+
+ /* undo rotation */
+ if(rc->rot_prop)
+ glPopMatrix();
}
+ else {
+ /* flat color if no texture available */
+ glutil_draw_filled_arc(0, M_PI * 2, radius, 40);
+ }
+}
+
+static void radial_control_paint_cursor(bContext *C, int x, int y, void *customdata)
+{
+ RadialControl *rc = customdata;
+ ARegion *ar = CTX_wm_region(C);
+ float r1=0.0f, r2=0.0f, tex_radius, alpha;
+ float zoom[2], col[3] = {1, 1, 1};
- if(rc->mode == WM_RADIALCONTROL_ANGLE) {
- glColor4fv(rc->col);
- glEnable(GL_LINE_SMOOTH);
- glRotatef(-angle, 0, 0, 1);
+ switch(rc->subtype) {
+ case PROP_DISTANCE:
+ r1= rc->current_value;
+ r2= rc->initial_value;
+ tex_radius= r1;
+ alpha = 0.75;
+ break;
+ case PROP_FACTOR:
+ r1= (1 - rc->current_value) * WM_RADIAL_CONTROL_DISPLAY_SIZE;
+ r2= tex_radius= WM_RADIAL_CONTROL_DISPLAY_SIZE;
+ alpha = rc->current_value / 2 + 0.5;
+ break;
+ case PROP_ANGLE:
+ r1= r2= tex_radius= WM_RADIAL_CONTROL_DISPLAY_SIZE;
+ alpha = 0.75;
+ break;
+ default:
+ break;
+ }
+
+ /* Keep cursor in the original place */
+ x = rc->initial_mouse[0] - ar->winrct.xmin;
+ y = rc->initial_mouse[1] - ar->winrct.ymin;
+ glTranslatef((float)x, (float)y, 0.0f);
+
+ glEnable(GL_BLEND);
+ glEnable(GL_LINE_SMOOTH);
+
+ /* apply zoom if available */
+ if(rc->zoom_prop) {
+ RNA_property_float_get_array(&rc->zoom_ptr, rc->zoom_prop, zoom);
+ glScalef(zoom[0], zoom[1], 1);
+ }
+
+ /* draw rotated texture */
+ radial_control_paint_tex(rc, tex_radius, alpha);
+
+ /* set line color */
+ if(rc->col_prop)
+ RNA_property_float_get_array(&rc->col_ptr, rc->col_prop, col);
+ glColor4f(col[0], col[1], col[2], 0.5);
+
+ if(rc->subtype == PROP_ANGLE) {
+ glPushMatrix();
+ /* draw original angle line */
+ glRotatef(RAD2DEGF(rc->initial_value), 0, 0, 1);
fdrawline(0.0f, 0.0f, (float)WM_RADIAL_CONTROL_DISPLAY_SIZE, 0.0f);
- glRotatef(angle, 0, 0, 1);
+ /* draw new angle line */
+ glRotatef(RAD2DEGF(rc->current_value - rc->initial_value), 0, 0, 1);
fdrawline(0.0f, 0.0f, (float)WM_RADIAL_CONTROL_DISPLAY_SIZE, 0.0f);
- glDisable(GL_LINE_SMOOTH);
+ glPopMatrix();
}
- glColor4fv(rc->col);
+ /* draw circles on top */
glutil_draw_lined_arc(0.0, (float)(M_PI*2.0), r1, 40);
glutil_draw_lined_arc(0.0, (float)(M_PI*2.0), r2, 40);
+
glDisable(GL_BLEND);
+ glDisable(GL_LINE_SMOOTH);
}
-int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
+/* attempt to retrieve the rna pointer/property from an rna path;
+ returns 0 for failure, 1 for success, and also 1 if property is not
+ set */
+static int radial_control_get_path(PointerRNA *ctx_ptr, wmOperator *op,
+ const char *name, PointerRNA *r_ptr,
+ PropertyRNA **r_prop, int req_float,
+ int req_length, int allow_missing)
{
- wmRadialControl *rc = (wmRadialControl*)op->customdata;
- int mode, initial_mouse[2], delta[2];
- float dist;
- double new_value = RNA_float_get(op->ptr, "new_value");
- int ret = OPERATOR_RUNNING_MODAL;
- // float initial_value = RNA_float_get(op->ptr, "initial_value");
+ PropertyRNA *unused_prop;
+ int len;
+ char *str;
- mode = RNA_enum_get(op->ptr, "mode");
- RNA_int_get_array(op->ptr, "initial_mouse", initial_mouse);
+ /* get an rna string path from the operator's properties */
+ if(!(str = RNA_string_get_alloc(op->ptr, name, NULL, 0)))
+ return 1;
- switch(event->type) {
- case MOUSEMOVE:
- delta[0]= initial_mouse[0] - event->x;
- delta[1]= initial_mouse[1] - event->y;
+ if(str[0] == '\0') {
+ MEM_freeN(str);
+ return 1;
+ }
- //if (mode == WM_RADIALCONTROL_SIZE)
- // delta[0]+= initial_value;
- //else if(mode == WM_RADIALCONTROL_STRENGTH)
- // delta[0]+= WM_RADIAL_CONTROL_DISPLAY_SIZE * (1 - initial_value);
- //else if(mode == WM_RADIALCONTROL_ANGLE) {
- // delta[0]+= WM_RADIAL_CONTROL_DISPLAY_SIZE * cos(initial_value*M_PI/180.0f);
- // delta[1]+= WM_RADIAL_CONTROL_DISPLAY_SIZE * sin(initial_value*M_PI/180.0f);
- //}
+ if(!r_prop)
+ r_prop = &unused_prop;
- dist= sqrtf(delta[0]*delta[0]+delta[1]*delta[1]);
+ /* get rna from path */
+ if(!RNA_path_resolve(ctx_ptr, str, r_ptr, r_prop)) {
+ MEM_freeN(str);
+ if(allow_missing)
+ return 1;
+ else {
+ BKE_reportf(op->reports, RPT_ERROR, "Couldn't resolve path %s", name);
+ return 0;
+ }
+ }
- if(mode == WM_RADIALCONTROL_SIZE)
- new_value = dist;
- else if(mode == WM_RADIALCONTROL_STRENGTH) {
- new_value = 1 - dist / WM_RADIAL_CONTROL_DISPLAY_SIZE;
- } else if(mode == WM_RADIALCONTROL_ANGLE)
- new_value = ((int)(atan2f(delta[1], delta[0]) * (float)(180.0 / M_PI)) + 180);
-
- if(event->ctrl) {
- if(mode == WM_RADIALCONTROL_STRENGTH)
- new_value = ((int)ceilf(new_value * 10.f) * 10.0f) / 100.f;
- else
- new_value = ((int)new_value + 5) / 10*10;
+ /* if property is expected to be a float, check its type */
+ if(req_float) {
+ if(!(*r_prop) || (RNA_property_type(*r_prop) != PROP_FLOAT)) {
+ MEM_freeN(str);
+ BKE_reportf(op->reports, RPT_ERROR,
+ "Property from path %s is not a float", name);
+ return 0;
}
-
- break;
- case ESCKEY:
- case RIGHTMOUSE:
- ret = OPERATOR_CANCELLED;
- break;
- case LEFTMOUSE:
- case PADENTER:
- op->type->exec(C, op);
- ret = OPERATOR_FINISHED;
- break;
+ }
+
+ /* check property's array length */
+ if(*r_prop && (len = RNA_property_array_length(r_ptr, *r_prop)) != req_length) {
+ MEM_freeN(str);
+ BKE_reportf(op->reports, RPT_ERROR,
+ "Property from path %s has length %d instead of %d",
+ name, len, req_length);
+ return 0;
}
- /* Clamp */
- if(new_value > rc->max_value)
- new_value = rc->max_value;
- else if(new_value < 0)
- new_value = 0;
+ /* success */
+ MEM_freeN(str);
+ return 1;
+}
- /* Update paint data */
- rc->value = (float)new_value;
+/* initialize the rna pointers and properties using rna paths */
+static int radial_control_get_properties(bContext *C, wmOperator *op)
+{
+ RadialControl *rc = op->customdata;
+ PointerRNA ctx_ptr;
- RNA_float_set(op->ptr, "new_value", rc->value);
+ RNA_pointer_create(NULL, &RNA_Context, C, &ctx_ptr);
- if(ret != OPERATOR_RUNNING_MODAL) {
- WM_paint_cursor_end(CTX_wm_manager(C), rc->cursor);
- MEM_freeN(rc);
- }
-
- ED_region_tag_redraw(CTX_wm_region(C));
+ if(!radial_control_get_path(&ctx_ptr, op, "data_path", &rc->ptr, &rc->prop, 0, 0, 0))
+ return 0;
- //if (ret != OPERATOR_RUNNING_MODAL) {
- // wmWindow *win = CTX_wm_window(C);
- // WM_cursor_restore(win);
- //}
+ /* data path is required */
+ if(!rc->prop)
+ return 0;
+
+ if(!radial_control_get_path(&ctx_ptr, op, "rotation_path", &rc->rot_ptr, &rc->rot_prop, 1, 0, 0))
+ return 0;
+ if(!radial_control_get_path(&ctx_ptr, op, "color_path", &rc->col_ptr, &rc->col_prop, 1, 3, 0))
+ return 0;
+ if(!radial_control_get_path(&ctx_ptr, op, "fill_color_path", &rc->fill_col_ptr, &rc->fill_col_prop, 1, 3, 0))
+ return 0;
+
+ /* slightly ugly; allow this property to not resolve
+ correctly. needed because 3d texture paint shares the same
+ keymap as 2d image paint */
+ if(!radial_control_get_path(&ctx_ptr, op, "zoom_path", &rc->zoom_ptr, &rc->zoom_prop, 1, 2, 1))
+ return 0;
+
+ if(!radial_control_get_path(&ctx_ptr, op, "image_id", &rc->image_id_ptr, NULL, 0, 0, 0))
+ return 0;
+ else if(rc->image_id_ptr.data) {
+ /* extra check, pointer must be to an ID */
+ if(!RNA_struct_is_ID(rc->image_id_ptr.type)) {
+ BKE_report(op->reports, RPT_ERROR,
+ "Pointer from path image_id is not an ID");
+ return 0;
+ }
+ }
- return ret;
+ return 1;
}
-/* Expects the operator customdata to be an ImBuf (or NULL) */
-int WM_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- wmRadialControl *rc = MEM_callocN(sizeof(wmRadialControl), "radial control");
- // wmWindow *win = CTX_wm_window(C);
- int mode = RNA_enum_get(op->ptr, "mode");
- float initial_value = RNA_float_get(op->ptr, "initial_value");
- //float initial_size = RNA_float_get(op->ptr, "initial_size");
- int mouse[2];
+ wmWindowManager *wm;
+ RadialControl *rc;
+ int min_value_int, max_value_int, step_int;
+ float step_float, precision;
- mouse[0]= event->x;
- mouse[1]= event->y;
-
- //if (initial_size == 0)
- // initial_size = WM_RADIAL_CONTROL_DISPLAY_SIZE;
+ if(!(op->customdata = rc = MEM_callocN(sizeof(RadialControl), "RadialControl")))
+ return OPERATOR_CANCELLED;
- if(mode == WM_RADIALCONTROL_SIZE) {
- rc->max_value = 200;
- mouse[0]-= (int)initial_value;
- }
- else if(mode == WM_RADIALCONTROL_STRENGTH) {
- rc->max_value = 1;
- mouse[0]-= (int)(WM_RADIAL_CONTROL_DISPLAY_SIZE * (1.0f - initial_value));
- }
- else if(mode == WM_RADIALCONTROL_ANGLE) {
- rc->max_value = 360;
- mouse[0]-= (int)(WM_RADIAL_CONTROL_DISPLAY_SIZE * cos(initial_value));
- mouse[1]-= (int)(WM_RADIAL_CONTROL_DISPLAY_SIZE * sin(initial_value));
- initial_value *= 180.0f/(float)M_PI;
+ if(!radial_control_get_properties(C, op)) {
+ MEM_freeN(rc);
+ return OPERATOR_CANCELLED;
}
- if(op->customdata) {
- ImBuf *im = (ImBuf*)op->customdata;
- /* Build GL texture */
- glGenTextures(1, &rc->tex);
- glBindTexture(GL_TEXTURE_2D, rc->tex);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, im->x, im->y, 0, GL_ALPHA, GL_FLOAT, im->rect_float);
- MEM_freeN(im->rect_float);
- MEM_freeN(im);
+ /* get type, initial, min, and max values of the property */
+ switch((rc->type = RNA_property_type(rc->prop))) {
+ case PROP_INT:
+ rc->initial_value = RNA_property_int_get(&rc->ptr, rc->prop);
+ RNA_property_int_ui_range(&rc->ptr, rc->prop, &min_value_int,
+ &max_value_int, &step_int);
+ rc->min_value = min_value_int;
+ rc->max_value = max_value_int;
+ break;
+ case PROP_FLOAT:
+ rc->initial_value = RNA_property_float_get(&rc->ptr, rc->prop);
+ RNA_property_float_ui_range(&rc->ptr, rc->prop, &rc->min_value,
+ &rc->max_value, &step_float, &precision);
+ break;
+ default:
+ BKE_report(op->reports, RPT_ERROR, "Property must be an integer or a float");
+ MEM_freeN(rc);
+ return OPERATOR_CANCELLED;
}
- RNA_float_get_array(op->ptr, "color", rc->col);
- RNA_float_get_array(op->ptr, "texture_color", rc->tex_col);
-
- RNA_int_set_array(op->ptr, "initial_mouse", mouse);
- RNA_float_set(op->ptr, "new_value", initial_value);
+ /* get subtype of property */
+ rc->subtype = RNA_property_subtype(rc->prop);
+ if(!ELEM3(rc->subtype, PROP_DISTANCE, PROP_FACTOR, PROP_ANGLE)) {
+ BKE_report(op->reports, RPT_ERROR, "Property must be a distance, a factor, or an angle");
+ MEM_freeN(rc);
+ return OPERATOR_CANCELLED;
+ }
- op->customdata = rc;
- rc->mode = mode;
- rc->initial_value = initial_value;
- rc->initial_mouse[0] = mouse[0];
- rc->initial_mouse[1] = mouse[1];
- rc->cursor = WM_paint_cursor_activate(CTX_wm_manager(C), op->type->poll,
- wm_radial_control_paint, op->customdata);
+ rc->current_value = rc->initial_value;
+ radial_control_set_initial_mouse(rc, event);
+ radial_control_set_tex(rc);
- //WM_cursor_modal(win, CURSOR_NONE);
+ /* temporarily disable other paint cursors */
+ wm = CTX_wm_manager(C);
+ rc->orig_paintcursors = wm->paintcursors;
+ wm->paintcursors.first = wm->paintcursors.last = NULL;
+
+ /* add radial control paint cursor */
+ rc->cursor = WM_paint_cursor_activate(wm, op->type->poll,
+ radial_control_paint_cursor, rc);
- /* add modal handler */
WM_event_add_modal_handler(C, op);
-
- WM_radial_control_modal(C, op, event);
-
+
return OPERATOR_RUNNING_MODAL;
}
-/* Gets a descriptive string of the operation */
-void WM_radial_control_string(wmOperator *op, char str[], int maxlen)
+static void radial_control_set_value(RadialControl *rc, float val)
{
- int mode = RNA_enum_get(op->ptr, "mode");
- float v = RNA_float_get(op->ptr, "new_value");
-
- if(mode == WM_RADIALCONTROL_SIZE)
- BLI_snprintf(str, maxlen, "Size: %d", (int)v);
- else if(mode == WM_RADIALCONTROL_STRENGTH)
- BLI_snprintf(str, maxlen, "Strength: %d", (int)v);
- else if(mode == WM_RADIALCONTROL_ANGLE)
- BLI_snprintf(str, maxlen, "Angle: %d", (int)(v * 180.0f/(float)M_PI));
+ switch(rc->type) {
+ case PROP_INT:
+ RNA_property_int_set(&rc->ptr, rc->prop, val);
+ break;
+ case PROP_FLOAT:
+ RNA_property_float_set(&rc->ptr, rc->prop, val);
+ break;
+ default:
+ break;
+ }
}
-/** Important: this doesn't define an actual operator, it
- just sets up the common parts of the radial control op. **/
-void WM_OT_radial_control_partial(wmOperatorType *ot)
+static int radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
{
- static EnumPropertyItem radial_mode_items[] = {
- {WM_RADIALCONTROL_SIZE, "SIZE", 0, "Size", ""},
- {WM_RADIALCONTROL_STRENGTH, "STRENGTH", 0, "Strength", ""},
- {WM_RADIALCONTROL_ANGLE, "ANGLE", 0, "Angle", ""},
- {0, NULL, 0, NULL, NULL}};
- static float color[4] = {1.0f, 1.0f, 1.0f, 0.5f};
- static float tex_color[4] = {1.0f, 1.0f, 1.0f, 1.0f};
+ RadialControl *rc = op->customdata;
+ wmWindowManager *wm;
+ float new_value, dist, zoom[2];
+ float delta[2], snap, ret = OPERATOR_RUNNING_MODAL;
+
+ /* TODO: fix hardcoded events */
- /* Should be set in custom invoke() */
- RNA_def_float(ot->srna, "initial_value", 0, 0, FLT_MAX, "Initial Value", "", 0, FLT_MAX);
+ snap = event->ctrl;
- /* Set internally, should be used in custom exec() to get final value */
- RNA_def_float(ot->srna, "new_value", 0, 0, FLT_MAX, "New Value", "", 0, FLT_MAX);
+ switch(event->type) {
+ case MOUSEMOVE:
+ delta[0]= rc->initial_mouse[0] - event->x;
+ delta[1]= rc->initial_mouse[1] - event->y;
+
+ if(rc->zoom_prop) {
+ RNA_property_float_get_array(&rc->zoom_ptr, rc->zoom_prop, zoom);
+ delta[0] /= zoom[0];
+ delta[1] /= zoom[1];
+ }
+
+ dist= sqrt(delta[0]*delta[0]+delta[1]*delta[1]);
+
+ /* calculate new value and apply snapping */
+ switch(rc->subtype) {
+ case PROP_DISTANCE:
+ new_value = dist;
+ if(snap) new_value = ((int)new_value + 5) / 10*10;
+ break;
+ case PROP_FACTOR:
+ new_value = 1 - dist / WM_RADIAL_CONTROL_DISPLAY_SIZE;
+ if(snap) new_value = ((int)ceil(new_value * 10.f) * 10.0f) / 100.f;
+ break;
+ case PROP_ANGLE:
+ new_value = atan2(delta[1], delta[0]) + M_PI;
+ if(snap) new_value = DEG2RADF(((int)RAD2DEGF(new_value) + 5) / 10*10);
+ break;
+ default:
+ break;
+ }
+
+ /* clamp and update */
+ CLAMP(new_value, rc->min_value, rc->max_value);
+ radial_control_set_value(rc, new_value);
+ rc->current_value = new_value;
+ break;
+
+ case ESCKEY:
+ case RIGHTMOUSE:
+ /* cancelled; restore original value */
+ radial_control_set_value(rc, rc->initial_value);
+ ret = OPERATOR_CANCELLED;
+ break;
+
+ case LEFTMOUSE:
+ case PADENTER:
+ /* done; value already set */
+ ret = OPERATOR_FINISHED;
+ break;
+ }
+
+ ED_region_tag_redraw(CTX_wm_region(C));
+
+ if(ret != OPERATOR_RUNNING_MODAL) {
+ wm = CTX_wm_manager(C);
+
+ WM_paint_cursor_end(wm, rc->cursor);
+
+ /* restore original paint cursors */
+ wm->paintcursors = rc->orig_paintcursors;
+
+ /* not sure if this is a good notifier to use;
+ intended purpose is to update the UI so that the
+ new value is displayed in sliders/numfields */
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+
+ glDeleteTextures(1, &rc->gltex);
+
+ MEM_freeN(rc);
+ }
+
+ return ret;
+}
+
+static void WM_OT_radial_control(wmOperatorType *ot)
+{
+ ot->name= "Radial Control";
+ ot->idname= "WM_OT_radial_control";
- /* Should be set before calling operator */
- RNA_def_enum(ot->srna, "mode", radial_mode_items, 0, "Mode", "");
+ ot->invoke= radial_control_invoke;
+ ot->modal= radial_control_modal;
- /* Internal */
- RNA_def_int_vector(ot->srna, "initial_mouse", 2, NULL, INT_MIN, INT_MAX, "Initial Mouse", "", INT_MIN, INT_MAX);
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
- RNA_def_float_color(ot->srna, "color", 4, color, 0.0f, FLT_MAX, "Color", "Radial control color", 0.0f, 1.0f);
- RNA_def_float_color(ot->srna, "texture_color", 4, tex_color, 0.0f, FLT_MAX, "Texture Color", "Radial control texture color", 0.0f, 1.0f);
+ /* all paths relative to the context */
+ RNA_def_string(ot->srna, "data_path", "", 0, "Data Path", "Path of property to be set by the radial control.");
+ RNA_def_string(ot->srna, "rotation_path", "", 0, "Rotation Path", "Path of property used to rotate the texture display.");
+ RNA_def_string(ot->srna, "color_path", "", 0, "Color Path", "Path of property used to set the color of the control.");
+ RNA_def_string(ot->srna, "fill_color_path", "", 0, "Fill Color Path", "Path of property used to set the fill color of the control.");
+ RNA_def_string(ot->srna, "zoom_path", "", 0, "Zoom Path", "Path of property used to set the zoom level for the control.");
+ RNA_def_string(ot->srna, "image_id", "", 0, "Image ID", "Path of ID that is used to generate an image for the control.");
}
/* ************************** timer for testing ***************** */
@@ -3133,6 +3327,7 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_splash);
WM_operatortype_append(WM_OT_search_menu);
WM_operatortype_append(WM_OT_call_menu);
+ WM_operatortype_append(WM_OT_radial_control);
#if defined(WIN32)
WM_operatortype_append(WM_OT_console_toggle);
#endif
diff --git a/source/blenderplayer/CMakeLists.txt b/source/blenderplayer/CMakeLists.txt
index 97021df288f..3aafc7d747a 100644
--- a/source/blenderplayer/CMakeLists.txt
+++ b/source/blenderplayer/CMakeLists.txt
@@ -128,7 +128,6 @@ endif()
extern_openjpeg
extern_redcode
bf_imbuf_dds
- bf_readblenfile
bf_dna
ge_videotex
bf_blenfont
diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c
index ce26510d212..3fc25dc4f14 100644
--- a/source/blenderplayer/bad_level_call_stubs/stubs.c
+++ b/source/blenderplayer/bad_level_call_stubs/stubs.c
@@ -248,6 +248,7 @@ short ANIM_add_driver(struct ID *id, const char rna_path[], int array_index, sho
short ANIM_remove_driver (struct ID *id, const char rna_path[], int array_index, short flag){return 0;}
void ED_space_image_release_buffer(struct SpaceImage *sima, void *lock){}
struct ImBuf *ED_space_image_acquire_buffer(struct SpaceImage *sima, void **lock_r){return (struct ImBuf *) NULL;}
+void ED_space_image_zoom(struct SpaceImage *sima, struct ARegion *ar, float *zoomx, float *zoomy) {}
char *ED_info_stats_string(struct Scene *scene){return (char *) NULL;}
void ED_area_tag_redraw(struct ScrArea *sa){}
void ED_area_tag_refresh(struct ScrArea *sa){}
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index bf88b4a84cc..26935d4b127 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -773,7 +773,6 @@ endif()
bf_imbuf_cineon
bf_imbuf_openexr
bf_imbuf_dds
- bf_readblenfile
bf_collada
bf_intern_bsp
bf_intern_bop
diff --git a/source/gameengine/GamePlayer/ghost/CMakeLists.txt b/source/gameengine/GamePlayer/ghost/CMakeLists.txt
index edf0839f747..389300efc21 100644
--- a/source/gameengine/GamePlayer/ghost/CMakeLists.txt
+++ b/source/gameengine/GamePlayer/ghost/CMakeLists.txt
@@ -39,7 +39,6 @@ set(INC
../../../../source/blender/blenfont
../../../../source/blender/blenlib
../../../../source/blender/blenkernel
- ../../../../source/blender/readblenfile
../../../../source/blender
../../../../source/blender/makesdna
../../../../source/blender/makesrna
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index a4f1391b1b0..832cd8b0651 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -67,7 +67,7 @@ extern "C"
#include "DNA_scene_types.h"
#include "DNA_userdef_types.h"
#include "BLO_readfile.h"
-#include "BLO_readblenfile.h"
+#include "BLO_runtime.h"
#include "IMB_imbuf.h"
#include "BKE_text.h"
@@ -313,8 +313,8 @@ static BlendFileData *load_game_data(char *progname, char *filename = NULL, char
BKE_reports_init(&reports, RPT_STORE);
/* try to load ourself, will only work if we are a runtime */
- if (blo_is_a_runtime(progname)) {
- bfd= blo_read_runtime(progname, &reports);
+ if (BLO_is_a_runtime(progname)) {
+ bfd= BLO_read_runtime(progname, &reports);
if (bfd) {
bfd->type= BLENFILETYPE_RUNTIME;
strcpy(bfd->main->name, progname);
@@ -444,7 +444,7 @@ int main(int argc, char** argv)
U.audiochannels = 2;
/* if running blenderplayer the last argument can't be parsed since it has to be the filename. */
- isBlenderPlayer = !blo_is_a_runtime(argv[0]);
+ isBlenderPlayer = !BLO_is_a_runtime(argv[0]);
if (isBlenderPlayer)
validArguments = argc - 1;
else
diff --git a/source/gameengine/GamePlayer/ghost/SConscript b/source/gameengine/GamePlayer/ghost/SConscript
index 65bd55f95d7..e3ffc1a406b 100644
--- a/source/gameengine/GamePlayer/ghost/SConscript
+++ b/source/gameengine/GamePlayer/ghost/SConscript
@@ -22,7 +22,6 @@ incs = ['.',
'#source/blender/blenfont',
'#source/blender/blenlib',
'#source/blender/blenkernel',
- '#source/blender/readblenfile',
'#source/blender',
'#source/blender/include',
'#source/blender/makesdna',