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:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2010-03-30 01:58:58 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2010-03-30 01:58:58 +0400
commita090f169994d0832a603ad871b3147e7ca938656 (patch)
treea3dd72f6f1133100176a625bd92afdc8a343700f /source/blender/freestyle
parentf4e9c5d71e7de908384c713da52585e027abe49e (diff)
Fixed the border option that was not functional when the crop option
was turned off.
Diffstat (limited to 'source/blender/freestyle')
-rw-r--r--source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
index 001da72771b..30e43018e25 100644
--- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
+++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
@@ -187,10 +187,9 @@ extern "C" {
void FRS_composite_result(Render* re, SceneRenderLayer* srl, Render* freestyle_render)
{
-
RenderLayer *rl;
float *src, *dest, *pixSrc, *pixDest;
- int x, y, rectx, recty;
+ int x, y, src_rectx, src_recty, dest_rectx, dest_recty, x_offset, y_offset;
if( freestyle_render == NULL || freestyle_render->result == NULL )
return;
@@ -198,27 +197,33 @@ extern "C" {
rl = render_get_active_layer( freestyle_render, freestyle_render->result );
if( !rl || rl->rectf == NULL) { cout << "Cannot find Freestyle result image" << endl; return; }
src = rl->rectf;
- //cout << "src: " << rl->rectx << " x " << rl->recty << endl;
+ src_rectx = rl->rectx;
+ src_recty = rl->recty;
+ //cout << "src: " << src_rectx << " x " << src_recty << endl;
rl = RE_GetRenderLayer(re->result, srl->name);
if( !rl || rl->rectf == NULL) { cout << "No layer to composite to" << endl; return; }
dest = rl->rectf;
- //cout << "dest: " << rl->rectx << " x " << rl->recty << endl;
-
- rectx = re->rectx;
- recty = re->recty;
-
- for( y = 0; y < recty; y++) {
- for( x = 0; x < rectx; x++) {
-
- pixSrc = src + 4 * (rectx * y + x);
+ dest_rectx = rl->rectx;
+ dest_recty = rl->recty;
+ //cout << "dest: " << dest_rectx << " x " << dest_recty << endl;
+
+ if (re->r.mode & R_BORDER && !(re->r.mode & R_CROP)) {
+ x_offset = re->disprect.xmin;
+ y_offset = re->disprect.ymin;
+ } else {
+ x_offset = 0;
+ y_offset = 0;
+ }
+ for( y = 0; y < dest_recty; y++) {
+ for( x = 0; x < dest_rectx; x++) {
+ pixSrc = src + 4 * (src_rectx * (y + y_offset) + (x + x_offset));
if( pixSrc[3] > 0.0) {
- pixDest = dest + 4 * (rectx * y + x);
+ pixDest = dest + 4 * (dest_rectx * y + x);
addAlphaOverFloat(pixDest, pixSrc);
- }
- }
+ }
+ }
}
-
}
int displayed_layer_count( SceneRenderLayer* srl ) {