Made aspx/y into floats so we can render precise regions (for apricot terrain baking)

This commit is contained in:
Campbell Barton 2008-04-09 15:46:26 +00:00
parent 9f6080cf1b
commit 235f793f28
4 changed files with 60 additions and 51 deletions

@ -125,14 +125,14 @@ def imageFromObjectsOrtho(objects, path, width, height, smooth, alpha= True, cam
# camera is wider then image res.
# to make the image wider, reduce the aspy
asp_diff= asp_image_res/asp_cam_mat
min_asp= int(round(asp_diff * 200))
min_asp= asp_diff * 200
#print 'X', min_asp
elif asp_cam_mat < asp_image_res: # asp_cam_mat < asp_image_res
# camera is narrower then image res
# to make the image narrower, reduce the aspx
asp_diff= asp_cam_mat/asp_image_res
min_asp= int(round(asp_diff * 200))
min_asp= asp_diff * 200
#print 'Y', min_asp
else:
min_asp= 200

@ -201,14 +201,6 @@ typedef struct RenderData {
* The desired number of pixels in the y direction
*/
short ysch;
/**
* Adjustment factors for the aspect ratio in the x direction
*/
short xasp;
/**
* Adjustment factors for the aspect ratio in the x direction
*/
short yasp;
/**
* The number of part to use in the x direction
*/
@ -225,7 +217,7 @@ typedef struct RenderData {
short bufflag;
short quality;
short rpad;
short rpad, rpad1, rpad2;
/**
* Flags for render settings. Use bit-masking to access the settings.
@ -260,6 +252,15 @@ typedef struct RenderData {
/* information on different layers to be rendered */
ListBase layers;
short actlay, pad;
/**
* Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
*/
float xasp;
/**
* Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
*/
float yasp;
float frs_sec_base;

@ -919,6 +919,18 @@ PyObject *RenderData_GaussFilterSize( BPy_RenderData * self, PyObject * args )
0.5f, 1.5f );
}
PyObject *RenderData_AspectRatioX( BPy_RenderData * self, PyObject * args )
{
return M_Render_GetSetAttributeFloat( args, &self->renderContext->xasp,
1.0f, 200.0f );
}
PyObject *RenderData_AspectRatioY( BPy_RenderData * self, PyObject * args )
{
return M_Render_GetSetAttributeFloat( args, &self->renderContext->yasp,
1.0f, 200.0f );
}
PyObject *RenderData_StartFrame( BPy_RenderData * self, PyObject * args )
{
return M_Render_GetSetAttributeInt( args, &self->renderContext->sfra,
@ -949,18 +961,6 @@ PyObject *RenderData_ImageSizeY( BPy_RenderData * self, PyObject * args )
4, 10000 );
}
PyObject *RenderData_AspectRatioX( BPy_RenderData * self, PyObject * args )
{
return M_Render_GetSetAttributeShort( args, &self->renderContext->xasp,
1, 200 );
}
PyObject *RenderData_AspectRatioY( BPy_RenderData * self, PyObject * args )
{
return M_Render_GetSetAttributeShort( args, &self->renderContext->yasp,
1, 200 );
}
static int RenderData_setRenderer( BPy_RenderData * self, PyObject * value )
{
int type;
@ -1868,6 +1868,12 @@ static PyObject *RenderData_getFloatAttr( BPy_RenderData *self, void *type )
case EXPP_RENDER_ATTR_BAKEBIAS:
param = self->renderContext->bake_biasdist;
break;
case EXPP_RENDER_ATTR_ASPECTX:
param = (long)self->renderContext->xasp;
break;
case EXPP_RENDER_ATTR_ASPECTY:
param = (long)self->renderContext->yasp;
break;
default:
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
"undefined type constant in RenderData_getFloatAttr" );
@ -1911,6 +1917,16 @@ static int RenderData_setFloatAttrClamp( BPy_RenderData *self, PyObject *value,
max = 1000.0f;
param = &self->renderContext->bake_biasdist;
break;
case EXPP_RENDER_ATTR_ASPECTX:
min = 1.0f;
max = 200.0f;
param = &self->renderContext->xasp;
break;
case EXPP_RENDER_ATTR_ASPECTY:
min = 1.0f;
max = 200.0f;
param = &self->renderContext->yasp;
break;
default:
return EXPP_ReturnIntError( PyExc_RuntimeError,
"undefined type constant in RenderData_setFloatAttrClamp" );
@ -1933,12 +1949,6 @@ static PyObject *RenderData_getIValueAttr( BPy_RenderData *self, void *type )
case EXPP_RENDER_ATTR_YPARTS:
param = (long)self->renderContext->yparts;
break;
case EXPP_RENDER_ATTR_ASPECTX:
param = (long)self->renderContext->xasp;
break;
case EXPP_RENDER_ATTR_ASPECTY:
param = (long)self->renderContext->yasp;
break;
case EXPP_RENDER_ATTR_CFRAME:
param = (long)self->renderContext->cfra;
break;
@ -1996,18 +2006,6 @@ static int RenderData_setIValueAttrClamp( BPy_RenderData *self, PyObject *value,
size = 'h';
param = &self->renderContext->yparts;
break;
case EXPP_RENDER_ATTR_ASPECTX:
min = 1;
max = 200;
size = 'h';
param = &self->renderContext->xasp;
break;
case EXPP_RENDER_ATTR_ASPECTY:
min = 1;
max = 200;
size = 'h';
param = &self->renderContext->yasp;
break;
case EXPP_RENDER_ATTR_CFRAME:
min = 1;
max = MAXFRAME;
@ -2726,14 +2724,6 @@ static PyGetSetDef BPy_RenderData_getseters[] = {
(getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
"Number of vertical parts for image render",
(void *)EXPP_RENDER_ATTR_YPARTS},
{"aspectX",
(getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
"Horizontal aspect ratio",
(void *)EXPP_RENDER_ATTR_ASPECTX},
{"aspectY",
(getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
"Vertical aspect ratio",
(void *)EXPP_RENDER_ATTR_ASPECTY},
{"cFrame",
(getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
"The current frame for rendering",
@ -2771,6 +2761,14 @@ static PyGetSetDef BPy_RenderData_getseters[] = {
(getter)RenderData_getFloatAttr, (setter)RenderData_setFloatAttrClamp,
"Motion blur factor",
(void *)EXPP_RENDER_ATTR_MBLURFACTOR},
{"aspectX",
(getter)RenderData_getFloatAttr, (setter)RenderData_setFloatAttrClamp,
"Horizontal aspect ratio",
(void *)EXPP_RENDER_ATTR_ASPECTX},
{"aspectY",
(getter)RenderData_getFloatAttr, (setter)RenderData_setFloatAttrClamp,
"Vertical aspect ratio",
(void *)EXPP_RENDER_ATTR_ASPECTY},
{"mapOld",
(getter)RenderData_getMapOld, (setter)RenderData_setMapOld,
"Number of frames the Map Old will last",

@ -2497,8 +2497,18 @@ static void render_panel_format(void)
uiBlockBeginAlign(block);
uiDefButS(block, NUM,REDRAWVIEWCAM,"SizeX:", 892 ,136,112,27, &G.scene->r.xsch, 4.0, 10000.0, 0, 0, "The image width in pixels");
uiDefButS(block, NUM,REDRAWVIEWCAM,"SizeY:", 1007,136,112,27, &G.scene->r.ysch, 4.0,10000.0, 0, 0, "The image height in scanlines");
uiDefButS(block, NUM,REDRAWVIEWCAM,"AspX:", 892 ,114,112,20, &G.scene->r.xasp, 1.0,200.0, 0, 0, "The horizontal aspect ratio");
uiDefButS(block, NUM,REDRAWVIEWCAM,"AspY:", 1007,114,112,20, &G.scene->r.yasp, 1.0,200.0, 0, 0, "The vertical aspect ratio");
uiDefButF(block, NUM, REDRAWVIEWCAM, "AspX:",
892 ,114,112,20,
&G.scene->r.xasp,
1, 200, 100, 2,
"Horizontal Aspect Ratio");
uiDefButF(block, NUM, REDRAWVIEWCAM, "AspY:",
1007,114,112,20,
&G.scene->r.yasp,
1, 200, 100, 2,
"Vertical Aspect Ratio");
uiBlockEndAlign(block);
yofs = 54;