/* Copyright 2005 Nicholas Bishop * * This file is part of SharpConstruct. * * SharpConstruct 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. * * SharpConstruct 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. * * You should have received a copy of the GNU General Public License * along with SharpConstruct; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DISPLACEBRUSH_HH #define DISPLACEBRUSH_HH #include "Optimized.h" #include "Sculpt.hh" #include namespace SharpConstruct { class EditData; class Mesh; class DisplaceBrush { public: DisplaceBrush( SculptPhase, Mesh& mesh ); void operator()( SculptPhase, EditData e ); void Postwork( SculptPhase ); private: class displace_location_ { public: displace_location_( Mesh& mesh, const EditData& e, const Optimized::Normal3D& norm ) : mesh_( mesh ), e_( e ), normal_( norm ) {} void operator()( const ActiveData& ); private: Mesh& mesh_; const EditData& e_; const Optimized::Normal3D& normal_; }; class displace_color_ { public: displace_color_( Mesh& mesh, const EditData& e ) : mesh_( mesh ), e_( e ) {} void operator()( const ActiveData& ); private: Mesh& mesh_; const EditData& e_; }; Mesh& mesh_; std::vector< ActiveData > active_data_; }; } #endif