projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Using mutexes around accesses to refcounts seems to make the Windows build much less...
[synfig.git]
/
synfig-core
/
trunk
/
src
/
synfig
/
target_scanline.cpp
diff --git
a/synfig-core/trunk/src/synfig/target_scanline.cpp
b/synfig-core/trunk/src/synfig/target_scanline.cpp
index
3021884
..
e43da30
100644
(file)
--- a/
synfig-core/trunk/src/synfig/target_scanline.cpp
+++ b/
synfig-core/trunk/src/synfig/target_scanline.cpp
@@
-2,10
+2,11
@@
/*! \file target_scanline.cpp
** \brief Template File
**
/*! \file target_scanline.cpp
** \brief Template File
**
-** $Id
: target_scanline.cpp,v 1.1.1.1 2005/01/04 01:23:15 darco Exp
$
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2008 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
@@
-46,7
+47,7
@@
using namespace synfig;
/* === M A C R O S ========================================================= */
/* === M A C R O S ========================================================= */
-#define SYNFIG_OPTIMIZE_LAYER_TREE
1
+#define SYNFIG_OPTIMIZE_LAYER_TREE
#define PIXEL_RENDERING_LIMIT 1500000
#define PIXEL_RENDERING_LIMIT 1500000
@@
-125,7
+126,7
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
curr_frame_=0;
if( !init() ){
curr_frame_=0;
if( !init() ){
- if(cb) cb->error(_("Target initiali
s
ation failure"));
+ if(cb) cb->error(_("Target initiali
z
ation failure"));
return false;
}
return false;
}
@@
-173,7
+174,8
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
#ifdef SYNFIG_OPTIMIZE_LAYER_TREE
Canvas::Handle op_canvas(Canvas::create());
#ifdef SYNFIG_OPTIMIZE_LAYER_TREE
Canvas::Handle op_canvas(Canvas::create());
- optimize_layers(canvas->get_context(), op_canvas);
+ op_canvas->set_file_name(canvas->get_file_name());
+ optimize_layers(canvas->get_time(), canvas->get_context(), op_canvas);
context=op_canvas->get_context();
#else
context=canvas->get_context();
context=op_canvas->get_context();
#else
context=canvas->get_context();
@@
-199,16
+201,16
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
#if USE_PIXELRENDERING_LIMIT
if(desc.get_w()*desc.get_h() > PIXEL_RENDERING_LIMIT)
{
#if USE_PIXELRENDERING_LIMIT
if(desc.get_w()*desc.get_h() > PIXEL_RENDERING_LIMIT)
{
- synfig::info("Render BROKEN UP! (%d pixels)", desc.get_w()*desc.get_h());
-
Surface surface;
int rowheight = PIXEL_RENDERING_LIMIT/desc.get_w();
Surface surface;
int rowheight = PIXEL_RENDERING_LIMIT/desc.get_w();
+ if (!rowheight) rowheight = 1; // TODO: render partial lines to stay within the limit?
int rows = desc.get_h()/rowheight;
int lastrowheight = desc.get_h() - rows*rowheight;
rows++;
int rows = desc.get_h()/rowheight;
int lastrowheight = desc.get_h() - rows*rowheight;
rows++;
- synfig::info("\t blockh=%d,remh=%d,totrows=%d", rowheight,lastrowheight,rows);
+ synfig::info("Render broken up into %d block%s %d pixels tall, and a final block %d pixels tall",
+ rows-1, rows==2?"":"s", rowheight, lastrowheight);
// loop through all the full rows
if(!start_frame())
// loop through all the full rows
if(!start_frame())
@@
-222,7
+224,7
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
RendDesc blockrd = desc;
//render the strip at the normal size unless it's the last one...
RendDesc blockrd = desc;
//render the strip at the normal size unless it's the last one...
- if(i == rows)
+ if(i == rows
-1
)
{
if(!lastrowheight) break;
blockrd.set_subwindow(0,i*rowheight,desc.get_w(),lastrowheight);
{
if(!lastrowheight) break;
blockrd.set_subwindow(0,i*rowheight,desc.get_w(),lastrowheight);
@@
-307,7
+309,8
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
#ifdef SYNFIG_OPTIMIZE_LAYER_TREE
Canvas::Handle op_canvas(Canvas::create());
#ifdef SYNFIG_OPTIMIZE_LAYER_TREE
Canvas::Handle op_canvas(Canvas::create());
- optimize_layers(canvas->get_context(), op_canvas);
+ op_canvas->set_file_name(canvas->get_file_name());
+ optimize_layers(canvas->get_time(), canvas->get_context(), op_canvas);
context=op_canvas->get_context();
#else
context=canvas->get_context();
context=op_canvas->get_context();
#else
context=canvas->get_context();
@@
-333,17
+336,17
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
#if USE_PIXELRENDERING_LIMIT
if(desc.get_w()*desc.get_h() > PIXEL_RENDERING_LIMIT)
{
#if USE_PIXELRENDERING_LIMIT
if(desc.get_w()*desc.get_h() > PIXEL_RENDERING_LIMIT)
{
- synfig::info("Render BROKEN UP! (%d pixels)", desc.get_w()*desc.get_h());
-
Surface surface;
int totalheight = desc.get_h();
int rowheight = PIXEL_RENDERING_LIMIT/desc.get_w();
Surface surface;
int totalheight = desc.get_h();
int rowheight = PIXEL_RENDERING_LIMIT/desc.get_w();
+ if (!rowheight) rowheight = 1; // TODO: render partial lines to stay within the limit?
int rows = desc.get_h()/rowheight;
int lastrowheight = desc.get_h() - rows*rowheight;
rows++;
int rows = desc.get_h()/rowheight;
int lastrowheight = desc.get_h() - rows*rowheight;
rows++;
- synfig::info("\t blockh=%d,remh=%d,totrows=%d", rowheight,lastrowheight,rows);
+ synfig::info("Render broken up into %d block%s %d pixels tall, and a final block %d pixels tall",
+ rows-1, rows==2?"":"s", rowheight, lastrowheight);
// loop through all the full rows
if(!start_frame())
// loop through all the full rows
if(!start_frame())
@@
-357,7
+360,7
@@
synfig::Target_Scanline::render(ProgressCallback *cb)
RendDesc blockrd = desc;
//render the strip at the normal size unless it's the last one...
RendDesc blockrd = desc;
//render the strip at the normal size unless it's the last one...
- if(i == rows)
+ if(i == rows
-1
)
{
if(!lastrowheight) break;
blockrd.set_subwindow(0,i*rowheight,desc.get_w(),lastrowheight);
{
if(!lastrowheight) break;
blockrd.set_subwindow(0,i*rowheight,desc.get_w(),lastrowheight);