X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_geometry%2Fcheckerboard.cpp;h=30bbf8e779ccbcb3c2fba63d08ddd328d0280c9f;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=f514c899ed9578efb786b7c4050328bd66c7205a;hpb=16b3beced25134bef064705568ecb893a6be4e79;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_geometry/checkerboard.cpp b/synfig-core/trunk/src/modules/mod_geometry/checkerboard.cpp index f514c89..30bbf8e 100644 --- a/synfig-core/trunk/src/modules/mod_geometry/checkerboard.cpp +++ b/synfig-core/trunk/src/modules/mod_geometry/checkerboard.cpp @@ -1,20 +1,22 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \file checkerboard.cpp -** \brief Template Header +** \brief Implementation of the "Checkerboard" layer ** -** $Id: checkerboard.cpp,v 1.1.1.1 2005/01/04 01:23:10 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 2008 Chris Moore ** -** This software and associated documentation -** are CONFIDENTIAL and PROPRIETARY property of -** the above-mentioned copyright holder. +** 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. ** -** You may not copy, print, publish, or in any -** other way distribute this software without -** a prior written agreement with -** the copyright holder. +** 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 */ /* ========================================================================= */ @@ -30,19 +32,19 @@ #include "checkerboard.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #endif -using namespace sinfg; +using namespace synfig; using namespace std; using namespace etl; @@ -50,12 +52,12 @@ using namespace etl; /* === G L O B A L S ======================================================= */ -SINFG_LAYER_INIT(CheckerBoard); -SINFG_LAYER_SET_NAME(CheckerBoard,"checker_board"); -SINFG_LAYER_SET_LOCAL_NAME(CheckerBoard,_("CheckerBoard")); -SINFG_LAYER_SET_CATEGORY(CheckerBoard,_("Geometry")); -SINFG_LAYER_SET_VERSION(CheckerBoard,"0.1"); -SINFG_LAYER_SET_CVS_ID(CheckerBoard,"$Id: checkerboard.cpp,v 1.1.1.1 2005/01/04 01:23:10 darco Exp $"); +SYNFIG_LAYER_INIT(CheckerBoard); +SYNFIG_LAYER_SET_NAME(CheckerBoard,"checker_board"); +SYNFIG_LAYER_SET_LOCAL_NAME(CheckerBoard,N_("Checkerboard")); +SYNFIG_LAYER_SET_CATEGORY(CheckerBoard,N_("Geometry")); +SYNFIG_LAYER_SET_VERSION(CheckerBoard,"0.1"); +SYNFIG_LAYER_SET_CVS_ID(CheckerBoard,"$Id$"); /* === P R O C E D U R E S ================================================= */ @@ -64,7 +66,7 @@ SINFG_LAYER_SET_CVS_ID(CheckerBoard,"$Id: checkerboard.cpp,v 1.1.1.1 2005/01/04 CheckerBoard::CheckerBoard(): Layer_Composite (1.0,Color::BLEND_STRAIGHT), color (Color::black()), - pos (Point(0.125,0.125)), + origin (Point(0.125,0.125)), size (Point(0.25,0.25)) { @@ -72,12 +74,12 @@ CheckerBoard::CheckerBoard(): } inline bool -CheckerBoard::point_test(const sinfg::Point& getpos)const +CheckerBoard::point_test(const synfig::Point& getpos)const { - int val=((int)((getpos[0]-pos[0])/size[0])+(int)((getpos[1]-pos[1])/size[1])); - if(getpos[0]-pos[0] < 0.0) + int val=((int)((getpos[0]-origin[0])/size[0])+(int)((getpos[1]-origin[1])/size[1])); + if(getpos[0]-origin[0] < 0.0) val++; - if(getpos[1]-pos[1] < 0.0) + if(getpos[1]-origin[1] < 0.0) val++; return val&1; } @@ -85,12 +87,16 @@ CheckerBoard::point_test(const sinfg::Point& getpos)const bool CheckerBoard::set_param(const String ¶m, const ValueBase &value) { - IMPORT(color); - IMPORT(pos); - IMPORT(pos[0]); - IMPORT(pos[1]); + IMPORT_PLUS(color, { if (color.get_a() == 0) { if (converted_blend_) { + set_blend_method(Color::BLEND_ALPHA_OVER); + color.set_a(1); } else transparent_color_ = true; } }); + IMPORT(origin); IMPORT(size); - + + IMPORT_AS(origin,"pos"); + IMPORT_AS(origin[0],"pos[0]"); + IMPORT_AS(origin[1],"pos[1]"); + return Layer_Composite::set_param(param,value); } @@ -98,43 +104,41 @@ ValueBase CheckerBoard::get_param(const String ¶m)const { EXPORT(color); - EXPORT(pos); - EXPORT(pos[0]); - EXPORT(pos[1]); + EXPORT(origin); EXPORT(size); EXPORT_NAME(); EXPORT_VERSION(); - - return Layer_Composite::get_param(param); + + return Layer_Composite::get_param(param); } Layer::Vocab CheckerBoard::get_param_vocab()const { Layer::Vocab ret(Layer_Composite::get_param_vocab()); - + ret.push_back(ParamDesc("color") .set_local_name(_("Color")) .set_description(_("Color of checkers")) ); - ret.push_back(ParamDesc("pos") - .set_local_name(_("Offset")) + ret.push_back(ParamDesc("origin") + .set_local_name(_("Origin")) ); ret.push_back(ParamDesc("size") .set_local_name(_("Size")) .set_description(_("Size of checkers")) - .set_origin("pos") + .set_origin("origin") ); return ret; } -sinfg::Layer::Handle -CheckerBoard::hit_check(sinfg::Context context, const sinfg::Point &getpos)const +synfig::Layer::Handle +CheckerBoard::hit_check(synfig::Context context, const synfig::Point &getpos)const { if(get_amount()!=0.0 && point_test(getpos)) { - sinfg::Layer::Handle tmp; + synfig::Layer::Handle tmp; if(get_blend_method()==Color::BLEND_BEHIND && (tmp=context.hit_check(getpos))) return tmp; if(Color::is_onto(get_blend_method()) && !(tmp=context.hit_check(getpos))) @@ -156,7 +160,7 @@ CheckerBoard::get_color(Context context, const Point &getpos)const return Color::blend(color,context.get_color(getpos),get_amount(),get_blend_method()); } else - return context.get_color(getpos); + return Color::blend(Color::alpha(),context.get_color(getpos),get_amount(),get_blend_method()); } bool