|
Carlos Lopez |
b0ac91 |
/* === S Y N F I G ========================================================= */
|
|
Carlos Lopez |
b0ac91 |
/*! \file stroboscope.cpp
|
|
Carlos Lopez |
b0ac91 |
** \brief Implementation of the "Stroboscope" layer
|
|
Carlos Lopez |
b0ac91 |
**
|
|
Carlos Lopez |
b0ac91 |
** $Id$
|
|
Carlos Lopez |
b0ac91 |
**
|
|
Carlos Lopez |
b0ac91 |
** \legal
|
|
Carlos Lopez |
b0ac91 |
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
|
|
Carlos Lopez |
b0ac91 |
** Copyright (c) 2007, 2008 Chris Moore
|
|
Carlos Lopez |
b0ac91 |
** Copyright (c) 2009 Ray Frederikson
|
|
Carlos Lopez |
e83454 |
** Copyright (c) 2012-2013 Carlos Lรณpez
|
|
Carlos Lopez |
b0ac91 |
**
|
|
Carlos Lopez |
b0ac91 |
** This package is free software; you can redistribute it and/or
|
|
Carlos Lopez |
b0ac91 |
** modify it under the terms of the GNU General Public License as
|
|
Carlos Lopez |
b0ac91 |
** published by the Free Software Foundation; either version 2 of
|
|
Carlos Lopez |
b0ac91 |
** the License, or (at your option) any later version.
|
|
Carlos Lopez |
b0ac91 |
**
|
|
Carlos Lopez |
b0ac91 |
** This package is distributed in the hope that it will be useful,
|
|
Carlos Lopez |
b0ac91 |
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Carlos Lopez |
b0ac91 |
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Carlos Lopez |
b0ac91 |
** General Public License for more details.
|
|
Carlos Lopez |
b0ac91 |
** \endlegal
|
|
Carlos Lopez |
b0ac91 |
**
|
|
Carlos Lopez |
b0ac91 |
** === N O T E S ===========================================================
|
|
Carlos Lopez |
b0ac91 |
**
|
|
Carlos Lopez |
b0ac91 |
** ========================================================================= */
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
/* === H E A D E R S ======================================================= */
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
#ifdef USING_PCH
|
|
Carlos Lopez |
b0ac91 |
# include "pch.h"
|
|
Carlos Lopez |
b0ac91 |
#else
|
|
Carlos Lopez |
b0ac91 |
#ifdef HAVE_CONFIG_H
|
|
Carlos Lopez |
b0ac91 |
# include <config.h></config.h>
|
|
Carlos Lopez |
b0ac91 |
#endif
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
#include "stroboscope.h"
|
|
bw |
94d8a6 |
|
|
bw |
94d8a6 |
#include <synfig localization.h=""></synfig>
|
|
bw |
94d8a6 |
#include <synfig general.h=""></synfig>
|
|
bw |
94d8a6 |
|
|
Carlos Lopez |
b0ac91 |
#include <synfig valuenode.h=""></synfig>
|
|
Diego Barrios Romero |
07d34c |
#include <synfig valuenode_const.h="" valuenodes=""></synfig>
|
|
Diego Barrios Romero |
07d34c |
#include <synfig valuenode_subtract.h="" valuenodes=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
#include <synfig time.h=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
#include <synfig context.h=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
#include <synfig paramdesc.h=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
#include <synfig renddesc.h=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
#include <synfig value.h=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
#include <synfig canvas.h=""></synfig>
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
#endif
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
using namespace std;
|
|
Carlos Lopez |
b0ac91 |
using namespace etl;
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
9f3c68 |
using namespace synfig;
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
144d3f |
using namespace modules;
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
9f3c68 |
using namespace lyr_std;
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
/* === M A C R O S ========================================================= */
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
/* === G L O B A L S ======================================================= */
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
SYNFIG_LAYER_INIT(Layer_Stroboscope);
|
|
Carlos Lopez |
b0ac91 |
SYNFIG_LAYER_SET_NAME(Layer_Stroboscope,"stroboscope");
|
|
Carlos Lopez |
b0ac91 |
SYNFIG_LAYER_SET_LOCAL_NAME(Layer_Stroboscope,N_("Stroboscope"));
|
|
caryoscelus |
2dbbd0 |
SYNFIG_LAYER_SET_CATEGORY(Layer_Stroboscope,N_("Time"));
|
|
Carlos Lopez |
b0ac91 |
SYNFIG_LAYER_SET_VERSION(Layer_Stroboscope,"0.1");
|
|
Carlos Lopez |
b0ac91 |
SYNFIG_LAYER_SET_CVS_ID(Layer_Stroboscope,"$Id$");
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
/* === P R O C E D U R E S ================================================= */
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
/* === M E T H O D S ======================================================= */
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
Layer_Stroboscope::Layer_Stroboscope()
|
|
Carlos Lopez |
b0ac91 |
{
|
|
Carlos Lopez |
e7e62c |
param_frequency=ValueBase(float(2.0));
|
|
Carlos Lopez |
5c5090 |
SET_INTERPOLATION_DEFAULTS();
|
|
Carlos Lopez |
5c5090 |
SET_STATIC_DEFAULTS();
|
|
Carlos Lopez |
b0ac91 |
}
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
Layer_Stroboscope::~Layer_Stroboscope()
|
|
Carlos Lopez |
b0ac91 |
{
|
|
Carlos Lopez |
b0ac91 |
}
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
bool
|
|
Carlos Lopez |
b0ac91 |
Layer_Stroboscope::set_param(const String & param, const ValueBase &value)
|
|
Carlos Lopez |
b0ac91 |
{
|
|
Carlos Lopez |
e7e62c |
IMPORT_VALUE(param_frequency);
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
return Layer::set_param(param,value);
|
|
Carlos Lopez |
b0ac91 |
}
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
ValueBase
|
|
Carlos Lopez |
b0ac91 |
Layer_Stroboscope::get_param(const String & param)const
|
|
Carlos Lopez |
b0ac91 |
{
|
|
Carlos Lopez |
e7e62c |
EXPORT_VALUE(param_frequency);
|
|
Carlos Lopez |
b0ac91 |
EXPORT_NAME();
|
|
Carlos Lopez |
b0ac91 |
EXPORT_VERSION();
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
return Layer::get_param(param);
|
|
Carlos Lopez |
b0ac91 |
}
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
Layer::Vocab
|
|
Carlos Lopez |
b0ac91 |
Layer_Stroboscope::get_param_vocab()const
|
|
Carlos Lopez |
b0ac91 |
{
|
|
Carlos Lopez |
b0ac91 |
Layer::Vocab ret(Layer::get_param_vocab());
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
6278a4 |
ret.push_back(ParamDesc("frequency")
|
|
Carlos Lopez |
6278a4 |
.set_local_name(_("Frequency"))
|
|
Carlos Lopez |
6278a4 |
.set_description(_("Frequency of the Strobe in times per second"))
|
|
Carlos Lopez |
b0ac91 |
);
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
return ret;
|
|
Carlos Lopez |
b0ac91 |
}
|
|
Carlos Lopez |
b0ac91 |
|
|
Carlos Lopez |
b0ac91 |
void
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
dd97a8 |
Layer_Stroboscope::set_time_vfunc(IndependentContext context, Time t)const
|
|
Carlos Lopez |
b0ac91 |
{
|
|
Carlos Lopez |
e7e62c |
float frequency=param_frequency.get(float());
|
|
Carlos Lopez |
e7e62c |
|
|
Carlos Lopez |
6278a4 |
Time ret_time=Time::begin();
|
|
Carlos Lopez |
6278a4 |
if(frequency > 0.0)
|
|
Carlos Lopez |
6278a4 |
ret_time = Time(1.0)/frequency*floor(t*frequency);
|
|
Carlos Lopez |
6278a4 |
|
|
Carlos Lopez |
6278a4 |
context.set_time(ret_time);
|
|
Carlos Lopez |
b0ac91 |
}
|
|
Carlos Lopez |
b0ac91 |
|