X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_noise%2Fnoise.cpp;h=4257a6cf376c36a16a23930ea17486eb4ea22056;hb=470efd06824232321e3d34f01adcfd94512c4aea;hp=d26f7702673a9cfe5158e97b82ccec3f05450b81;hpb=e8a065f2385c219c511b57dac52786120bfa097d;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_noise/noise.cpp b/synfig-core/trunk/src/modules/mod_noise/noise.cpp index d26f770..4257a6c 100644 --- a/synfig-core/trunk/src/modules/mod_noise/noise.cpp +++ b/synfig-core/trunk/src/modules/mod_noise/noise.cpp @@ -1,11 +1,12 @@ /* === S Y N F I G ========================================================= */ /*! \file noise.cpp -** \brief blehh +** \brief Implementation of the "Noise Gradient" layer ** -** $Id: noise.cpp,v 1.2 2005/01/13 06:48:39 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007 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 @@ -52,10 +53,10 @@ using namespace etl; SYNFIG_LAYER_INIT(Noise); SYNFIG_LAYER_SET_NAME(Noise,"noise"); -SYNFIG_LAYER_SET_LOCAL_NAME(Noise,_("Noise Gradient")); -SYNFIG_LAYER_SET_CATEGORY(Noise,_("Gradients")); +SYNFIG_LAYER_SET_LOCAL_NAME(Noise,N_("Noise Gradient")); +SYNFIG_LAYER_SET_CATEGORY(Noise,N_("Gradients")); SYNFIG_LAYER_SET_VERSION(Noise,"0.0"); -SYNFIG_LAYER_SET_CVS_ID(Noise,"$Id: noise.cpp,v 1.2 2005/01/13 06:48:39 darco Exp $"); +SYNFIG_LAYER_SET_CVS_ID(Noise,"$Id$"); /* === P R O C E D U R E S ================================================= */ @@ -65,7 +66,7 @@ Noise::Noise(): size(1,1), gradient(Color::black(), Color::white()) { - smooth=2; + smooth=RandomNoise::SMOOTH_COSINE; detail=4; speed=0; do_alpha=false; @@ -79,26 +80,26 @@ Noise::Noise(): inline Color -Noise::color_func(const Point &point, float pixel_size,Context context)const +Noise::color_func(const Point &point, float pixel_size,Context /*context*/)const { Color ret(0,0,0,0); - + float x(point[0]/size[0]*(1<1)amount=1; - + if(super_sample&&pixel_size) { - amount2=random(smooth,0+(detail-i)*5,x2,y,t)+amount2*0.5; + amount2=random(smooth,0+(detail-i)*5,x2,y,ftime)+amount2*0.5; if(amount2<-1)amount2=-1;if(amount2>1)amount2=1; - amount3=random(smooth,0+(detail-i)*5,x,y2,t)+amount3*0.5; + amount3=random(smooth,0+(detail-i)*5,x,y2,ftime)+amount3*0.5; if(amount3<-1)amount3=-1;if(amount3>1)amount3=1; if(turbulent) @@ -127,22 +128,22 @@ Noise::color_func(const Point &point, float pixel_size,Context context)const x2*=0.5f; y2*=0.5f; } - + if(do_alpha) { - alpha=random(smooth,3+(detail-i)*5,x,y,t)+alpha*0.5; + alpha=random(smooth,3+(detail-i)*5,x,y,ftime)+alpha*0.5; if(alpha<-1)alpha=-1;if(alpha>1)alpha=1; } - + if(turbulent) { amount=abs(amount); alpha=abs(alpha); } - + x*=0.5f; y*=0.5f; - //t*=0.5f; + //ftime*=0.5f; } if(!turbulent) @@ -156,7 +157,7 @@ Noise::color_func(const Point &point, float pixel_size,Context context)const amount3=amount3/2.0f+0.5f; } } - + if(super_sample && pixel_size) ret=gradient(amount,max(amount3,max(amount,amount2))-min(amount3,min(amount,amount2))); else @@ -169,7 +170,7 @@ Noise::color_func(const Point &point, float pixel_size,Context context)const } inline float -Noise::calc_supersample(const synfig::Point &x, float pw,float ph)const +Noise::calc_supersample(const synfig::Point &/*x*/, float /*pw*/,float /*ph*/)const { return 0.0f; } @@ -203,7 +204,7 @@ Noise::hit_check(synfig::Context context, const synfig::Point &point)const bool Noise::set_param(const String & param, const ValueBase &value) { - if(param=="seed" && value.same_as(int())) + if(param=="seed" && value.same_type_as(int())) { random.set_seed(value.get(int())); return true; @@ -216,8 +217,8 @@ Noise::set_param(const String & param, const ValueBase &value) IMPORT(gradient); IMPORT(turbulent); IMPORT(super_sample); - - return Layer_Composite::set_param(param,value); + + return Layer_Composite::set_param(param,value); } ValueBase @@ -231,25 +232,25 @@ Noise::get_param(const String & param)const EXPORT(detail); EXPORT(do_alpha); EXPORT(gradient); - EXPORT(turbulent) + EXPORT(turbulent) EXPORT(super_sample); - + EXPORT_NAME(); EXPORT_VERSION(); - - return Layer_Composite::get_param(param); + + return Layer_Composite::get_param(param); } Layer::Vocab Noise::get_param_vocab()const { Layer::Vocab ret(Layer_Composite::get_param_vocab()); - + ret.push_back(ParamDesc("gradient") .set_local_name(_("Gradient")) ); ret.push_back(ParamDesc("seed") - .set_local_name(_("Random Seed")) + .set_local_name(_("RandomNoise Seed")) ); ret.push_back(ParamDesc("size") .set_local_name(_("Size")) @@ -258,11 +259,11 @@ Noise::get_param_vocab()const .set_local_name(_("Interpolation")) .set_description(_("What type of interpolation to use")) .set_hint("enum") - .add_enum_value(0,"nearest",_("Nearest Neighbor")) - .add_enum_value(1,"linear",_("Linear")) - .add_enum_value(2,"cosine",_("Cosine")) - .add_enum_value(3,"spline",_("Spline")) - .add_enum_value(4,"cubic",_("Cubic")) + .add_enum_value(RandomNoise::SMOOTH_DEFAULT, "nearest", _("Nearest Neighbor")) + .add_enum_value(RandomNoise::SMOOTH_LINEAR, "linear", _("Linear")) + .add_enum_value(RandomNoise::SMOOTH_COSINE, "cosine", _("Cosine")) + .add_enum_value(RandomNoise::SMOOTH_SPLINE, "spline", _("Spline")) + .add_enum_value(RandomNoise::SMOOTH_CUBIC, "cubic", _("Cubic")) ); ret.push_back(ParamDesc("detail") .set_local_name(_("Detail")) @@ -279,7 +280,7 @@ Noise::get_param_vocab()const ret.push_back(ParamDesc("super_sample") .set_local_name(_("Super Sampling")) ); - + return ret; } @@ -311,7 +312,7 @@ Noise::accelerated_render(Context context,Surface *surface,int quality, const Re return true; } - + int x,y; Surface::pen pen(surface->begin()); @@ -323,7 +324,7 @@ Noise::accelerated_render(Context context,Surface *surface,int quality, const Re float supersampleradius((abs(pw)+abs(ph))*0.5f); if(quality>=8) supersampleradius=0; - + if(get_amount()==1.0 && get_blend_method()==Color::BLEND_STRAIGHT) { for(y=0,pos[1]=tl[1];y