init
This commit is contained in:
206
lib/engine/rs_atomicentity.cpp
Normal file
206
lib/engine/rs_atomicentity.cpp
Normal file
@@ -0,0 +1,206 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** This file is part of the LibreCAD project, a 2D CAD program
|
||||
**
|
||||
|
||||
Copyright (C) 2012-2015 Dongxu Li (dongxuli2011@gmail.com)
|
||||
|
||||
This program 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 program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "rs_atomicentity.h"
|
||||
RS_AtomicEntity::RS_AtomicEntity(RS_EntityContainer* parent) : RS_Entity(parent) {}
|
||||
|
||||
bool RS_AtomicEntity::isContainer() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true because entities made from subclasses are
|
||||
* atomic entities.
|
||||
*/
|
||||
bool RS_AtomicEntity::isAtomic() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Always 1 for atomic entities.
|
||||
*/
|
||||
unsigned int RS_AtomicEntity::count() const{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Always 1 for atomic entities.
|
||||
*/
|
||||
unsigned int RS_AtomicEntity::countDeep() const{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must return the endpoint of the entity or
|
||||
* an invalid vector if the entity has no endpoint.
|
||||
*/
|
||||
RS_Vector RS_AtomicEntity::getEndpoint() const {
|
||||
return RS_Vector(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must return the startpoint of the entity or
|
||||
* an invalid vector if the entity has no startpoint.
|
||||
*/
|
||||
RS_Vector RS_AtomicEntity::getStartpoint() const {
|
||||
return RS_Vector(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must return the angle in which direction the entity starts.
|
||||
*/
|
||||
double RS_AtomicEntity::getDirection1() const {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must return the angle in which direction the entity starts the opposite way.
|
||||
*/
|
||||
double RS_AtomicEntity::getDirection2() const {
|
||||
return 0.0;
|
||||
}
|
||||
RS_Vector RS_AtomicEntity::getCenter() const {
|
||||
return RS_Vector(false);
|
||||
}
|
||||
double RS_AtomicEntity::getRadius() const {
|
||||
return 0.;
|
||||
}
|
||||
/**
|
||||
* return the nearest center for snapping
|
||||
* @param coord Coordinate (typically a mouse coordinate)
|
||||
* @param dist Pointer to a value which will contain the measured
|
||||
* distance between 'coord' and the closest center point. The passed
|
||||
* pointer can also be NULL in which case the distance will be
|
||||
* lost.
|
||||
*
|
||||
* @return The closest center point.
|
||||
*/
|
||||
RS_Vector RS_AtomicEntity::getNearestCenter(const RS_Vector& /*coord*/,
|
||||
double* /*dist*/) const{
|
||||
return RS_Vector(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* (De-)selects startpoint.
|
||||
*/
|
||||
void RS_AtomicEntity::setStartpointSelected(bool select) {
|
||||
if (select) {
|
||||
setFlag(RS2::FlagSelected1);
|
||||
} else {
|
||||
delFlag(RS2::FlagSelected1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* (De-)selects endpoint.
|
||||
*/
|
||||
void RS_AtomicEntity::setEndpointSelected(bool select) {
|
||||
if (select) {
|
||||
setFlag(RS2::FlagSelected2);
|
||||
} else {
|
||||
delFlag(RS2::FlagSelected2);
|
||||
}
|
||||
}
|
||||
bool RS_AtomicEntity::isTangent(const RS_CircleData& /* circleData */) const{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return True if the entities startpoint is selected.
|
||||
*/
|
||||
bool RS_AtomicEntity::isStartpointSelected() const {
|
||||
return getFlag(RS2::FlagSelected1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return True if the entities endpoint is selected.
|
||||
*/
|
||||
bool RS_AtomicEntity::isEndpointSelected() const {
|
||||
return getFlag(RS2::FlagSelected2);
|
||||
}
|
||||
|
||||
void RS_AtomicEntity::revertDirection(){}
|
||||
|
||||
/**
|
||||
* Implementation must create offset of the entity to
|
||||
* the given direction and distance
|
||||
*/
|
||||
bool RS_AtomicEntity::offset(const RS_Vector& /*position*/, const double& /*distance*/) {return false;}
|
||||
|
||||
/**
|
||||
* Implementation must move the startpoint of the entity to
|
||||
* the given position.
|
||||
*/
|
||||
void RS_AtomicEntity::moveStartpoint(const RS_Vector& /*pos*/) {}
|
||||
|
||||
/**
|
||||
* Implementation must move the endpoint of the entity to
|
||||
* the given position.
|
||||
*/
|
||||
void RS_AtomicEntity::moveEndpoint(const RS_Vector& /*pos*/) {}
|
||||
|
||||
/**
|
||||
* Implementation must trim the startpoint of the entity to
|
||||
* the given position.
|
||||
*/
|
||||
void RS_AtomicEntity::trimStartpoint(const RS_Vector& pos) {
|
||||
moveStartpoint(pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must trim the endpoint of the entity to
|
||||
* the given position.
|
||||
*/
|
||||
void RS_AtomicEntity::trimEndpoint(const RS_Vector& pos) {
|
||||
moveEndpoint(pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must return which ending of the entity will
|
||||
* be trimmed if 'coord' is the coordinate chosen to indicate the
|
||||
* trim entity and 'trimPoint' is the point to which the entity will
|
||||
* be trimmed.
|
||||
*/
|
||||
RS2::Ending RS_AtomicEntity::getTrimPoint(const RS_Vector& /*coord*/,
|
||||
const RS_Vector& /*trimPoint*/) {
|
||||
return RS2::EndingNone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation must trim the entity in the case of multiple
|
||||
* intersections and return the trimPoint
|
||||
* trimCoord indicts the trigger trim position
|
||||
* trimSol contains intersections
|
||||
* */
|
||||
RS_Vector RS_AtomicEntity::prepareTrim(const RS_Vector& /*trimCoord*/,
|
||||
const RS_VectorSolutions& /*trimSol*/) {
|
||||
return RS_Vector(false);
|
||||
}
|
||||
|
||||
void RS_AtomicEntity::reverse() {}
|
||||
|
||||
void RS_AtomicEntity::moveSelectedRef(const RS_Vector& ref, const RS_Vector& offset) {
|
||||
if (isSelected()) {
|
||||
moveRef(ref, offset);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user