Cleanup: use single struct for freestyle globals

Was shadowing local vars.
This commit is contained in:
Campbell Barton
2015-11-23 15:31:11 +11:00
parent 6a393fc998
commit a269287f36
6 changed files with 40 additions and 41 deletions
+11 -5
View File
@@ -34,11 +34,17 @@ struct Material;
struct FreestyleConfig;
struct FreestyleLineStyle;
extern struct Scene *freestyle_scene;
extern float freestyle_viewpoint[3];
extern float freestyle_mv[4][4];
extern float freestyle_proj[4][4];
extern int freestyle_viewport[4];
struct FreestyleGlobals {
struct Scene *scene;
/* camera information */
float viewpoint[3];
float mv[4][4];
float proj[4][4];
int viewport[4];
};
extern struct FreestyleGlobals g_freestyle;
/* Rendering */
void FRS_initialize(void);
@@ -110,7 +110,7 @@ real AppView::distanceToSceneCenter()
{
BBox<Vec3r> bbox = _ModelRootNode->bbox();
Vec3r v(freestyle_viewpoint[0], freestyle_viewpoint[1], freestyle_viewpoint[2]);
Vec3r v(UNPACK3(g_freestyle.viewpoint));
v -= 0.5 * (bbox.getMin() + bbox.getMax());
return v.norm();
@@ -121,7 +121,7 @@ real AppView::znear()
BBox<Vec3r> bbox = _ModelRootNode->bbox();
Vec3r u = bbox.getMin();
Vec3r v = bbox.getMax();
Vec3r cameraCenter(freestyle_viewpoint[0], freestyle_viewpoint[1], freestyle_viewpoint[2]);
Vec3r cameraCenter(UNPACK3(g_freestyle.viewpoint));
Vec3r w1(u[0], u[1], u[2]);
Vec3r w2(v[0], u[1], u[2]);
@@ -156,7 +156,7 @@ real AppView::zfar()
BBox<Vec3r> bbox = _ModelRootNode->bbox();
Vec3r u = bbox.getMin();
Vec3r v = bbox.getMax();
Vec3r cameraCenter(freestyle_viewpoint[0], freestyle_viewpoint[1], freestyle_viewpoint[2]);
Vec3r cameraCenter(UNPACK3(g_freestyle.viewpoint));
Vec3r w1(u[0], u[1], u[2]);
Vec3r w2(v[0], u[1], u[2]);
@@ -289,14 +289,14 @@ int Controller::LoadMesh(Render *re, SceneRenderLayer *srl)
if (_EnableViewMapCache) {
NodeCamera *cam;
if (freestyle_proj[3][3] != 0.0)
if (g_freestyle.proj[3][3] != 0.0)
cam = new NodeOrthographicCamera;
else
cam = new NodePerspectiveCamera;
double proj[16];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
proj[i * 4 + j] = freestyle_proj[i][j];
proj[i * 4 + j] = g_freestyle.proj[i][j];
}
}
cam->setProjectionMatrix(proj);
@@ -477,7 +477,7 @@ void Controller::ComputeViewMap()
// Restore the context of view:
// we need to perform all these operations while the
// 3D context is on.
Vec3f vp(freestyle_viewpoint[0], freestyle_viewpoint[1], freestyle_viewpoint[2]);
Vec3f vp(UNPACK3(g_freestyle.viewpoint));
#if 0
if (G.debug & G_DEBUG_FREESTYLE) {
@@ -487,7 +487,7 @@ void Controller::ComputeViewMap()
real mv[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
mv[i][j] = freestyle_mv[i][j];
mv[i][j] = g_freestyle.mv[i][j];
#if 0
if (G.debug & G_DEBUG_FREESTYLE) {
cout << mv[i][j] << " ";
@@ -509,7 +509,7 @@ void Controller::ComputeViewMap()
real proj[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
proj[i][j] = freestyle_proj[i][j];
proj[i][j] = g_freestyle.proj[i][j];
#if 0
if (G.debug & G_DEBUG_FREESTYLE) {
cout << proj[i][j] << " ";
@@ -525,7 +525,7 @@ void Controller::ComputeViewMap()
int viewport[4];
for (int i = 0; i < 4; i++)
viewport[i] = freestyle_viewport[i];
viewport[i] = g_freestyle.viewport[i];
#if 0
if (G.debug & G_DEBUG_FREESTYLE) {
@@ -68,6 +68,8 @@ extern "C" {
#define DEFAULT_SPHERE_RADIUS 1.0f
#define DEFAULT_DKR_EPSILON 0.0f
struct FreestyleGlobals g_freestyle;
// Freestyle configuration
static bool freestyle_is_initialized = false;
static Config::Path *pathconfig = NULL;
@@ -78,14 +80,6 @@ static AppView *view = NULL;
static FreestyleLineSet lineset_buffer;
static bool lineset_copied = false;
// camera information
float freestyle_viewpoint[3];
float freestyle_mv[4][4];
float freestyle_proj[4][4];
int freestyle_viewport[4];
// current scene
Scene *freestyle_scene;
static void load_post_callback(struct Main * /*main*/, struct ID * /*id*/, void * /*arg*/)
{
@@ -113,7 +107,7 @@ void FRS_initialize()
view = new AppView;
controller->setView(view);
controller->Clear();
freestyle_scene = NULL;
g_freestyle.scene = NULL;
lineset_copied = false;
BLI_callback_add(&load_post_callback_funcstore, BLI_CB_EVT_LOAD_POST);
@@ -159,9 +153,9 @@ static void init_view(Render *re)
break;
}
freestyle_viewport[0] = freestyle_viewport[1] = 0;
freestyle_viewport[2] = width;
freestyle_viewport[3] = height;
g_freestyle.viewport[0] = g_freestyle.viewport[1] = 0;
g_freestyle.viewport[2] = width;
g_freestyle.viewport[3] = height;
view->setWidth(width);
view->setHeight(height);
@@ -184,17 +178,15 @@ static void init_camera(Render *re)
// Therefore, the view point (i.e., camera position) is at the origin, and
// the model-view matrix is simply the identity matrix.
freestyle_viewpoint[0] = 0.0;
freestyle_viewpoint[1] = 0.0;
freestyle_viewpoint[2] = 0.0;
zero_v3(g_freestyle.viewpoint);
unit_m4(freestyle_mv);
unit_m4(g_freestyle.mv);
copy_m4_m4(freestyle_proj, re->winmat);
copy_m4_m4(g_freestyle.proj, re->winmat);
#if 0
print_m4("mv", freestyle_mv);
print_m4("proj", freestyle_proj);
print_m4("mv", g_freestyle.mv);
print_m4("proj", g_freestyle.proj);
#endif
}
@@ -633,11 +625,11 @@ Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render)
re->i.infostr = "Freestyle: Stroke rendering";
re->stats_draw(re->sdh, &re->i);
re->i.infostr = NULL;
freestyle_scene = re->scene;
g_freestyle.scene = re->scene;
controller->DrawStrokes();
freestyle_render = controller->RenderStrokes(re, true);
controller->CloseFile();
freestyle_scene = NULL;
g_freestyle.scene = NULL;
// composite result
FRS_composite_result(re, srl, freestyle_render);
@@ -41,10 +41,10 @@ void GridHelpers::getDefaultViewProscenium(real viewProscenium[4])
// borderZone describes a blank border outside the proscenium, but still inside the image area.
// Only intended for exposing possible artifacts along or outside the proscenium edge during debugging.
const real borderZone = 0.0;
viewProscenium[0] = freestyle_viewport[2] * (borderZone - bufferZone);
viewProscenium[1] = freestyle_viewport[2] * (1.0f - borderZone + bufferZone);
viewProscenium[2] = freestyle_viewport[3] * (borderZone - bufferZone);
viewProscenium[3] = freestyle_viewport[3] * (1.0f - borderZone + bufferZone);
viewProscenium[0] = g_freestyle.viewport[2] * (borderZone - bufferZone);
viewProscenium[1] = g_freestyle.viewport[2] * (1.0f - borderZone + bufferZone);
viewProscenium[2] = g_freestyle.viewport[3] * (borderZone - bufferZone);
viewProscenium[3] = g_freestyle.viewport[3] * (1.0f - borderZone + bufferZone);
}
GridHelpers::Transform::~Transform ()
@@ -74,12 +74,13 @@ static char Freestyle_getCurrentScene___doc__[] =
static PyObject *Freestyle_getCurrentScene(PyObject * /*self*/)
{
if (!freestyle_scene) {
Scene *scene = g_freestyle.scene;
if (!scene) {
PyErr_SetString(PyExc_TypeError, "current scene not available");
return NULL;
}
PointerRNA ptr_scene;
RNA_pointer_create(&freestyle_scene->id, &RNA_Scene, freestyle_scene, &ptr_scene);
RNA_pointer_create(&scene->id, &RNA_Scene, scene, &ptr_scene);
return pyrna_struct_CreatePyObject(&ptr_scene);
}