044d712d4d03f8354962d54e47cfac2346a69ccccilix#ifndef INKSCAPE_LPE_COPY_ROTATE_H
044d712d4d03f8354962d54e47cfac2346a69ccccilix#define INKSCAPE_LPE_COPY_ROTATE_H
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilix/** \file
044d712d4d03f8354962d54e47cfac2346a69ccccilix * LPE <copy_rotate> implementation, see lpe-copy_rotate.cpp.
044d712d4d03f8354962d54e47cfac2346a69ccccilix */
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilix/*
044d712d4d03f8354962d54e47cfac2346a69ccccilix * Authors:
044d712d4d03f8354962d54e47cfac2346a69ccccilix * Johan Engelen
044d712d4d03f8354962d54e47cfac2346a69ccccilix *
044d712d4d03f8354962d54e47cfac2346a69ccccilix * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>
044d712d4d03f8354962d54e47cfac2346a69ccccilix *
044d712d4d03f8354962d54e47cfac2346a69ccccilix * Released under GNU GPL, read the file 'COPYING' for more information
044d712d4d03f8354962d54e47cfac2346a69ccccilix */
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilix#include "live_effects/effect.h"
044d712d4d03f8354962d54e47cfac2346a69ccccilix#include "live_effects/parameter/point.h"
63c37c52d614c3cde7913cf23a0f79040ed2e318Jabiertxof#include "live_effects/lpegroupbbox.h"
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilixnamespace Inkscape {
044d712d4d03f8354962d54e47cfac2346a69ccccilixnamespace LivePathEffect {
044d712d4d03f8354962d54e47cfac2346a69ccccilix
57678273bfa80d2feb4fa17ac25818f277f5c684cilixnamespace CR {
29d914e1655a5f1996843a0cdbf3f3c3b9a61515Jabiertxof// we need a separate namespace to avoid clashes with LPEPerpBisector
29d914e1655a5f1996843a0cdbf3f3c3b9a61515Jabiertxofclass KnotHolderEntityStartingAngle;
29d914e1655a5f1996843a0cdbf3f3c3b9a61515Jabiertxofclass KnotHolderEntityRotationAngle;
57678273bfa80d2feb4fa17ac25818f277f5c684cilix}
57678273bfa80d2feb4fa17ac25818f277f5c684cilix
63c37c52d614c3cde7913cf23a0f79040ed2e318Jabiertxofclass LPECopyRotate : public Effect, GroupBBoxEffect {
044d712d4d03f8354962d54e47cfac2346a69ccccilixpublic:
044d712d4d03f8354962d54e47cfac2346a69ccccilix LPECopyRotate(LivePathEffectObject *lpeobject);
044d712d4d03f8354962d54e47cfac2346a69ccccilix virtual ~LPECopyRotate();
a39c187369a59e887255e3f704a3ababf2b10678Johan B. C. Engelen virtual void doOnApply (SPLPEItem const* lpeitem);
044d712d4d03f8354962d54e47cfac2346a69ccccilix virtual Geom::Piecewise<Geom::D2<Geom::SBasis> > doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const & pwd2_in);
4781f50aaa2d243abc172da7c6e4265357a3353bJabiertxof virtual void doBeforeEffect (SPLPEItem const* lpeitem);
576772eec28313682a693f83310dcab8fc2268fcJabiertxof virtual void setFusion(Geom::PathVector &path_in, Geom::Path divider, double sizeDivider);
c7b7d3141dbcb52614a0240bdd0abfbb96b18ac3Jabiertxof virtual void split(Geom::PathVector &path_in, Geom::Path const &divider);
4781f50aaa2d243abc172da7c6e4265357a3353bJabiertxof virtual void resetDefaults(SPItem const* item);
8b09c414dc125e3afe5df60b47a80d24534d0a32Jabiertxof virtual void transform_multiply(Geom::Affine const& postmul, bool set);
57678273bfa80d2feb4fa17ac25818f277f5c684cilix /* the knotholder entity classes must be declared friends */
6b03b973a8d36d45d5345ba1013db10df1c7a5cecilix friend class CR::KnotHolderEntityStartingAngle;
4781f50aaa2d243abc172da7c6e4265357a3353bJabiertxof friend class CR::KnotHolderEntityRotationAngle;
3cfad782faf34c654ec837780ed7b3fe95e82c2eJohan B. C. Engelen void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item);
57678273bfa80d2feb4fa17ac25818f277f5c684cilix
e44b9de426cfa07c598fda61d214dc053a0706ddcilixprotected:
f2604687c203c022c4a9715f34e34253a7ff0e75Johan B. C. Engelen virtual void addCanvasIndicators(SPLPEItem const *lpeitem, std::vector<Geom::PathVector> &hp_vec);
e44b9de426cfa07c598fda61d214dc053a0706ddcilix
044d712d4d03f8354962d54e47cfac2346a69ccccilixprivate:
4781f50aaa2d243abc172da7c6e4265357a3353bJabiertxof PointParam origin;
6b03b973a8d36d45d5345ba1013db10df1c7a5cecilix ScalarParam starting_angle;
6b03b973a8d36d45d5345ba1013db10df1c7a5cecilix ScalarParam rotation_angle;
044d712d4d03f8354962d54e47cfac2346a69ccccilix ScalarParam num_copies;
6f204d7ccc9b43d0754032ca9db0268d1d14cba2Jabiertxof BoolParam copies_to_360;
c7b7d3141dbcb52614a0240bdd0abfbb96b18ac3Jabiertxof BoolParam fuse_paths;
57678273bfa80d2feb4fa17ac25818f277f5c684cilix Geom::Point A;
57678273bfa80d2feb4fa17ac25818f277f5c684cilix Geom::Point B;
57678273bfa80d2feb4fa17ac25818f277f5c684cilix Geom::Point dir;
d4200d96d8369f38efb722b04869b360388eeb80cilix Geom::Point start_pos;
d4200d96d8369f38efb722b04869b360388eeb80cilix Geom::Point rot_pos;
57678273bfa80d2feb4fa17ac25818f277f5c684cilix double dist_angle_handle;
044d712d4d03f8354962d54e47cfac2346a69ccccilix LPECopyRotate(const LPECopyRotate&);
044d712d4d03f8354962d54e47cfac2346a69ccccilix LPECopyRotate& operator=(const LPECopyRotate&);
044d712d4d03f8354962d54e47cfac2346a69ccccilix};
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilix} //namespace LivePathEffect
044d712d4d03f8354962d54e47cfac2346a69ccccilix} //namespace Inkscape
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilix#endif
044d712d4d03f8354962d54e47cfac2346a69ccccilix
044d712d4d03f8354962d54e47cfac2346a69ccccilix/*
044d712d4d03f8354962d54e47cfac2346a69ccccilix Local Variables:
044d712d4d03f8354962d54e47cfac2346a69ccccilix mode:c++
044d712d4d03f8354962d54e47cfac2346a69ccccilix c-file-style:"stroustrup"
044d712d4d03f8354962d54e47cfac2346a69ccccilix c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
044d712d4d03f8354962d54e47cfac2346a69ccccilix indent-tabs-mode:nil
044d712d4d03f8354962d54e47cfac2346a69ccccilix fill-column:99
044d712d4d03f8354962d54e47cfac2346a69ccccilix End:
044d712d4d03f8354962d54e47cfac2346a69ccccilix*/
044d712d4d03f8354962d54e47cfac2346a69ccccilix// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :