lqr_carver_resize — liquid rescale a LqrCarver
object
#include <lqr.h>
LqrRetVal lqr_carver_resize( | LqrCarver* carver, |
gint new_width, | |
gint new_height) ; |
The function lqr_carver_resize
performs the liquid rescaling over the
LqrCarver
object pointed to by carver
. If a visibility map was loaded
through the function lqr_vmap_load
, and the carver was not initialised, the
resizing operations must be limited to the direction and the sizes included in the loaded map.
If the carver was initialised through the function lqr_carver_init
, there
are no limitations to the final size.
The resizing function can be called multiple times, and it will decide automatically whether the
computation of the visibility map is necessary or not. In case it isn't, the function returns
almost immediately, otherwise operations will proceed following the order given through the
function lqr_carver_set_resize_order
. Currently, on-the-fly rescaling
without computation is only possible for a single direction at a time.
If the new size (in one direction or in both) is greater than or equal to the original size
multiplied by the enlargement step of the carver
object (as obtained
through lqr_carver_get_enl_step
(3)), the rescaling will be performed in
multiple steps. At each step, the original size stored internally is reset to the new value;
therefore, each step in the process can be bigger then the previous one.
Whenever the resizing dirction changes (this may happen in a single call of the rescaling
function or through multiple calls), or if performing a multiple steps enlargement as per the
previous paragraph, the visibility map computed during the first direction rescale is dropped to
make place for the one for the second (and the original size of the image is reset to the
current value). These visibility maps can be saved by using the
lqr_carver_set_vmap_dump
function, for inspection or future use.