-/*! ========================================================================
-** Synfig
-** Template File
-** $Id: star.cpp,v 1.1.1.1 2005/01/04 01:23:10 darco Exp $
+/* === S Y N F I G ========================================================= */
+/*! \file star.cpp
+** \brief Template Header
**
+** $Id$
+**
+** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
** This package is free software; you can redistribute it and/or
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** General Public License for more details.
+** \endlegal
**
** === N O T E S ===========================================================
**
SYNFIG_LAYER_SET_LOCAL_NAME(Star,_("Star"));
SYNFIG_LAYER_SET_CATEGORY(Star,_("Geometry"));
SYNFIG_LAYER_SET_VERSION(Star,"0.1");
-SYNFIG_LAYER_SET_CVS_ID(Star,"$Id: star.cpp,v 1.1.1.1 2005/01/04 01:23:10 darco Exp $");
+SYNFIG_LAYER_SET_CVS_ID(Star,"$Id$");
/* === P R O C E D U R E S ================================================= */
radius1(1.0),
radius2(0.38),
points(5),
- angle(Angle::deg(90))
+ angle(Angle::deg(90)),
+ regular_polygon(false)
{
sync();
}
{
Angle dist_between_points(Angle::rot(1)/float(points));
std::vector<Point> vector_list;
-
+
int i;
for(i=0;i<points;i++)
{
Angle dist1(dist_between_points*i+angle);
Angle dist2(dist_between_points*i+dist_between_points/2+angle);
vector_list.push_back(Point(Angle::cos(dist1).get()*radius1,Angle::sin(dist1).get()*radius1));
- vector_list.push_back(Point(Angle::cos(dist2).get()*radius2,Angle::sin(dist2).get()*radius2));
+ if (!regular_polygon)
+ vector_list.push_back(Point(Angle::cos(dist2).get()*radius2,Angle::sin(dist2).get()*radius2));
}
clear();
add_polygon(vector_list);
bool
Star::set_param(const String & param, const ValueBase &value)
{
- if( param=="radius1" && value.same_as(radius1))
+ if( param=="radius1" && value.same_type_as(radius1))
{
value.put(&radius1);
sync();
return true;
}
- if( param=="radius2" && value.same_as(radius2))
+ if( param=="radius2" && value.same_type_as(radius2))
{
value.put(&radius2);
sync();
return true;
}
- if( param=="points" && value.same_as(points))
+ if( param=="points" && value.same_type_as(points))
{
value.put(&points);
if(points<2)points=2;
return true;
}
- if( param=="angle" && value.same_as(angle))
+ if( param=="angle" && value.same_type_as(angle))
{
value.put(&angle);
sync();
return true;
}
+ if(param=="regular_polygon" && value.same_type_as(regular_polygon))
+ {
+ value.put(®ular_polygon);
+ sync();
+ return true;
+ }
+
if(param=="vector_list")
return false;
EXPORT(radius2);
EXPORT(points);
EXPORT(angle);
+ EXPORT(regular_polygon);
EXPORT_NAME();
EXPORT_VERSION();
if(param=="vector_list")
- return ValueBase();
+ return ValueBase();
return Layer_Polygon::get_param(param);
}
.set_description(_("The number of points in the star"))
);
+ ret.push_back(ParamDesc("regular_polygon")
+ .set_local_name(_("Regular Polygon"))
+ .set_description(_("Whether to draw a star or a regular polygon"))
+ );
+
return ret;
}