/* === S Y N F I G ========================================================= */
/*! \file sphere_distort.cpp
-** \brief Sphere Distort File
+** \brief Implementation of the "Spherize" layer
**
** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
-** Copyright (c) 2007 Chris Moore
+** Copyright (c) 2007, 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
SYNFIG_LAYER_INIT(Layer_SphereDistort);
SYNFIG_LAYER_SET_NAME(Layer_SphereDistort,"spherize");
-SYNFIG_LAYER_SET_LOCAL_NAME(Layer_SphereDistort,_("Spherize"));
-SYNFIG_LAYER_SET_CATEGORY(Layer_SphereDistort,_("Distortions"));
+SYNFIG_LAYER_SET_LOCAL_NAME(Layer_SphereDistort,N_("Spherize"));
+SYNFIG_LAYER_SET_CATEGORY(Layer_SphereDistort,N_("Distortions"));
SYNFIG_LAYER_SET_VERSION(Layer_SphereDistort,"0.2");
SYNFIG_LAYER_SET_CVS_ID(Layer_SphereDistort,"$Id$");
/* === E N T R Y P O I N T ================================================= */
Layer_SphereDistort::Layer_SphereDistort()
-:Layer_Composite(1.0,Color::BLEND_STRAIGHT),
-center(0,0),
+:center(0,0),
radius(1),
percent(1.0),
type(TYPE_NORMAL),
(type == TYPE_DISTV && (sphr.miny >= windr.maxy || windr.miny >= sphr.maxy)) )
{
//synfig::warning("Spherize: Bounding box reject");
- return context.accelerated_render(surface,quality,renddesc,cb);
+ if (clip)
+ {
+ surface->set_wh(renddesc.get_w(), renddesc.get_h());
+ surface->clear();
+ return true;
+ }
+ else
+ return context.accelerated_render(surface,quality,renddesc,cb);
}
//synfig::warning("Spherize: Bounding box accept");
close = origin[i] + v[i]*t;
- //now get transforms and expand the rectangle to accomodate
+ //now get transforms and expand the rectangle to accommodate
Point p = sphtrans(close,center,radius,percent,type);
expandr.expand(p[0],p[1]);
p = sphtrans(origin[i],center,radius,percent,type);
Layer_SphereDistort::get_bounding_rect()const
{
Rect bounds(Rect::full_plane());
+
+ if (clip)
+ return bounds;
+
switch(type)
{
case TYPE_NORMAL: