X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-core%2Ftags%2Fsynfig_0_61_04%2Fsynfig-core%2Fsrc%2Fsynfig%2Fvalue.cpp;fp=synfig-core%2Ftags%2Fsynfig_0_61_04%2Fsynfig-core%2Fsrc%2Fsynfig%2Fvalue.cpp;h=0000000000000000000000000000000000000000;hb=6fa8f2f38d4b0b35f8539bf94e27ae27015c7689;hp=ad57b56ba7b1f78f5bb638e496f4d4676cb8c8f3;hpb=47fce282611fbba1044921d22ca887f9b53ad91a;p=synfig.git diff --git a/synfig-core/tags/synfig_0_61_04/synfig-core/src/synfig/value.cpp b/synfig-core/tags/synfig_0_61_04/synfig-core/src/synfig/value.cpp deleted file mode 100644 index ad57b56..0000000 --- a/synfig-core/tags/synfig_0_61_04/synfig-core/src/synfig/value.cpp +++ /dev/null @@ -1,407 +0,0 @@ -/* === S Y N F I G ========================================================= */ -/*! \file value.cpp -** \brief Template Header -** -** $Id: value.cpp,v 1.1.1.1 2005/01/04 01:23:15 darco Exp $ -** -** \legal -** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** -** This package is free software; you can redistribute it and/or -** modify it under the terms of the GNU General Public License as -** published by the Free Software Foundation; either version 2 of -** the License, or (at your option) any later version. -** -** This package is distributed in the hope that it will be useful, -** 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 -*/ -/* ========================================================================= */ - -/* === H E A D E R S ======================================================= */ - -#ifdef USING_PCH -# include "pch.h" -#else -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "value.h" -#include "general.h" -#include -#include "canvas.h" -#include "gradient.h" - - - -#include "vector.h" -#include "time.h" -#include "segment.h" -#include "color.h" - -#endif - -using namespace synfig; -using namespace std; -using namespace etl; - -/* === M A C R O S ========================================================= */ - -/* === G L O B A L S ======================================================= */ - -/* === P R O C E D U R E S ================================================= */ - -/* === M E T H O D S ======================================================= */ - -ValueBase::ValueBase():type(TYPE_NIL),data(0),ref_count(0),loop_(0) -{ -} - -ValueBase::ValueBase(Type x): - type(x), - data(0), - loop_(0) -{ - - switch(type) - { - case TYPE_BOOL: - data=static_cast(new bool()); - break; - case TYPE_INTEGER: - data=static_cast(new int()); - break; - case TYPE_ANGLE: - data=static_cast(new Angle()); - break; - case TYPE_VECTOR: - data=static_cast(new Vector()); - break; - case TYPE_TIME: - data=static_cast(new Time()); - break; - case TYPE_REAL: - data=static_cast(new Real()); - break; - case TYPE_COLOR: - data=static_cast(new Color()); - break; - case TYPE_SEGMENT: - data=static_cast(new Segment()); - break; - case TYPE_BLINEPOINT: - data=static_cast(new BLinePoint()); - break; - case TYPE_LIST: - data=static_cast(new list_type()); - break; - case TYPE_STRING: - data=static_cast(new String()); - break; - case TYPE_GRADIENT: - data=static_cast(new Gradient()); - break; - case TYPE_CANVAS: - data=static_cast(new etl::handle()); - break; - default: - break; - } -} - -ValueBase::~ValueBase() -{ - clear(); -} - -const char* -ValueBase::get(const char*)const -{ - return get(String()).c_str(); -} - - - - -void -ValueBase::set(Canvas* x) -{ - clear(); - if(x && x->is_inline()) - { - _set(etl::handle(x)); - } - else - { - _set(etl::loose_handle(x)); - } - assert(get(x)==x); -} - -void -ValueBase::set(etl::loose_handle x) -{ - clear(); - if(x && x->is_inline()) - { - _set(etl::handle(x)); - } - else - { - _set(etl::loose_handle(x)); - } - assert(get(x)==x); -} - -void -ValueBase::set(etl::handle x) -{ - clear(); - if(x && x->is_inline()) - { - _set(etl::handle(x)); - } - else - { - _set(etl::loose_handle(x)); - } - assert(get(x)==x); -} - -void -ValueBase::set(const list_type &x) -{ - _set(x); -} - -void -ValueBase::set(const char* x) -{ - _set(String(x)); -} - -bool -ValueBase::is_valid()const -{ - return type>TYPE_NIL && type(data); - break; - case TYPE_INTEGER: - delete static_cast(data); - break; - case TYPE_ANGLE: - delete static_cast(data); - break; - case TYPE_VECTOR: - delete static_cast(data); - break; - case TYPE_TIME: - delete static_cast(data); - break; - case TYPE_REAL: - delete static_cast(data); - break; - case TYPE_COLOR: - delete static_cast(data); - break; - case TYPE_SEGMENT: - delete static_cast(data); - break; - case TYPE_BLINEPOINT: - delete static_cast(data); - break; - case TYPE_LIST: - delete static_cast(data); - break; - case TYPE_STRING: - delete static_cast(data); - break; - case TYPE_GRADIENT: - delete static_cast(data); - break; - - - case TYPE_CANVAS: - { - etl::handle canvas(get(etl::loose_handle())); - if(canvas && canvas->is_inline()) - { - delete static_cast*>(data); - } - else - { - delete static_cast*>(data); - } - break; - } - default: - break; - } - } - - ref_count.detach(); - data=0; - type=TYPE_NIL; -} - - -String -ValueBase::type_name(Type id) -{ - switch(id) - { - case TYPE_REAL: - return "real"; - case TYPE_TIME: - return "time"; - case TYPE_INTEGER: - return "integer"; - case TYPE_BOOL: - return "bool"; - case TYPE_ANGLE: - return "angle"; - case TYPE_VECTOR: - return "vector"; - case TYPE_COLOR: - return "color"; - case TYPE_STRING: - return "string"; - case TYPE_CANVAS: - return "canvas"; - case TYPE_LIST: - return "list"; - case TYPE_SEGMENT: - return "segment"; - case TYPE_GRADIENT: - return "gradient"; - case TYPE_BLINEPOINT: - return "bline_point"; - case TYPE_NIL: - return "nil"; - default: - break; - } - synfig::warning("Encountered unknown ValueBase with an Type of %d",id); -// assert(0); - return "UNKNOWN"; -} - -ValueBase::Type -ValueBase::ident_type(const String &str) -{ - if(str=="nil" || str=="null") - return TYPE_NIL; - else if(str=="time" || str==_("time")) - return TYPE_TIME; - else if(str=="real" || str=="float" || str==_("real")) - return TYPE_REAL; - else if(str=="integer" || str=="int" || str==_("integer")) - return TYPE_INTEGER; - else if(str=="bool" || str==_("bool")) - return TYPE_BOOL; - else if(str=="angle" || str=="degrees" || str=="radians" || str=="rotations") - return TYPE_ANGLE; - else if(str=="vector" || str=="point") - return TYPE_VECTOR; - else if(str=="color") - return TYPE_COLOR; - else if(str=="string") - return TYPE_STRING; - else if(str=="canvas") - return TYPE_CANVAS; - else if(str=="list") - return TYPE_LIST; - else if(str=="segment") - return TYPE_SEGMENT; - else if(str=="gradient") - return TYPE_GRADIENT; - else if(str=="bline_point" || str=="blinepoint") - return TYPE_BLINEPOINT; - - return TYPE_NIL; -} - -bool -ValueBase::operator==(const ValueBase& rhs)const -{ - if(get_type()!=rhs.get_type()) - return false; - if(data==rhs.data) - return true; - - switch(get_type()) - { - case TYPE_TIME: - return get(Time()).is_equal(rhs.get(Time())); - case TYPE_REAL: - return abs(get(Real())-rhs.get(Real()))<=0.00000000000001; - case TYPE_INTEGER: - return get(int())==rhs.get(int()); - case TYPE_BOOL: - return get(bool())==rhs.get(bool()); - case TYPE_ANGLE: - return get(Angle())==rhs.get(Angle()); - case TYPE_VECTOR: - return get(Vector()).is_equal_to(rhs.get(Vector())); - case TYPE_COLOR: - return get(Color())==rhs.get(Color()); - case TYPE_STRING: - return get(String())==rhs.get(String()); - case TYPE_CANVAS: - return get(Canvas::LooseHandle())==rhs.get(Canvas::LooseHandle()); - case TYPE_LIST: - return get_list()==rhs.get_list(); - case TYPE_SEGMENT: -// return get(Segment())==rhs.get(Segment()); - case TYPE_GRADIENT: -// return get(Gradient())==rhs.get(Gradient()); - case TYPE_BLINEPOINT: -// return get(BLinePoint())==rhs.get(BLinePoint()); - case TYPE_NIL: - default: - return false; - break; - } - return false; -}