summaryrefslogtreecommitdiffstats
path: root/kig/filters/drgeo-filter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kig/filters/drgeo-filter.cc')
-rw-r--r--kig/filters/drgeo-filter.cc202
1 files changed, 101 insertions, 101 deletions
diff --git a/kig/filters/drgeo-filter.cc b/kig/filters/drgeo-filter.cc
index 3f213146..856d995c 100644
--- a/kig/filters/drgeo-filter.cc
+++ b/kig/filters/drgeo-filter.cc
@@ -62,7 +62,7 @@
struct DrGeoHierarchyElement
{
TQString id;
- std::vector<TQString> tqparents;
+ std::vector<TQString> parents;
};
KigFilterDrgeo::KigFilterDrgeo()
@@ -202,7 +202,7 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
TQDomElement ce = c.toElement();
if ( ce.isNull() ) continue;
else if ( ce.tagName() == "tqparent" )
- elem.tqparents.push_back( ce.attribute( "ref" ) );
+ elem.parents.push_back( ce.attribute( "ref" ) );
}
TQString curid = domelem.attribute( "id" );
elem.id = !curid.isNull() ? curid : TQString::number( withoutid++ ) ;
@@ -216,9 +216,9 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
for ( uint i = 0; i < elems.size(); ++i )
{
x = "";
- for ( uint j = 0; j < elems[i].tqparents.size(); ++j )
+ for ( uint j = 0; j < elems[i].parents.size(); ++j )
{
- x += elems[i].tqparents[j] + "_";
+ x += elems[i].parents[j] + "_";
}
kdDebug() << " --> " << i << " - " << elems[i].id << " - " << x << endl;
}
@@ -241,25 +241,25 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
kdDebug() << "+++ id: " << curid << endl;
#endif
const DrGeoHierarchyElement& el = elems[curid];
- std::vector<ObjectCalcer*> tqparents;
- for ( uint j = 0; j < el.tqparents.size(); ++j )
+ std::vector<ObjectCalcer*> parents;
+ for ( uint j = 0; j < el.parents.size(); ++j )
{
- int tqparentid = convertDrgeoIndex( elems, el.tqparents[j] );
- if ( tqparentid == -1 )
+ int parentid = convertDrgeoIndex( elems, el.parents[j] );
+ if ( parentid == -1 )
KIG_FILTER_PARSE_ERROR;
- tqparents.push_back( holders[tqparentid-nignored]->calcer() );
+ parents.push_back( holders[parentid-nignored]->calcer() );
};
TQDomElement domelem = a.toElement();
#ifdef DRGEO_DEBUG
- if ( tqparents.size() > 0 )
- for ( uint j = 0; j < tqparents.size(); ++j )
+ if ( parents.size() > 0 )
+ for ( uint j = 0; j < parents.size(); ++j )
{
- kdDebug() << "+++++++++ tqparent[" << j << "]: " << tqparents[j] << " - "
- << tqparents[j]->imp()->type()->internalName() << endl;
+ kdDebug() << "+++++++++ tqparent[" << j << "]: " << parents[j] << " - "
+ << parents[j]->imp()->type()->internalName() << endl;
}
else
- kdDebug() << "+++++++++ tqparents: NO" << endl;
+ kdDebug() << "+++++++++ parents: NO" << endl;
kdDebug() << "+++++++++ " << domelem.tagName() << " - " << domelem.attribute("type") << endl;
#endif
@@ -291,15 +291,15 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
oc = fact->fixedPointCalcer( Coordinate( x, y ) );
}
else if ( domelem.attribute( "type" ) == "Middle_2pts" )
- oc = new ObjectTypeCalcer( MidPointType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( MidPointType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Middle_segment" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- if ( !tqparents[0]->imp()->inherits( SegmentImp::stype() ) )
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ if ( !parents[0]->imp()->inherits( SegmentImp::stype() ) )
KIG_FILTER_PARSE_ERROR;
- ObjectPropertyCalcer* o1 = fact->propertyObjectCalcer( tqparents[0], "end-point-A" );
+ ObjectPropertyCalcer* o1 = fact->propertyObjectCalcer( parents[0], "end-point-A" );
o1->calc( *ret );
- ObjectPropertyCalcer* o2 = fact->propertyObjectCalcer( tqparents[0], "end-point-B" );
+ ObjectPropertyCalcer* o2 = fact->propertyObjectCalcer( parents[0], "end-point-B" );
o2->calc( *ret );
std::vector<ObjectCalcer*> args;
args.push_back( o1 );
@@ -312,26 +312,26 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
double value = values.toDouble( &ok3 );
if ( ! ok3 )
KIG_FILTER_PARSE_ERROR;
- if ( ( tqparents[0]->imp()->inherits( CircleImp::stype() ) ) ||
- ( tqparents[0]->imp()->inherits( SegmentImp::stype() ) ) )
- oc = fact->constrainedPointCalcer( tqparents[0], value );
- else if ( tqparents[0]->imp()->inherits( LineImp::stype() ) )
+ if ( ( parents[0]->imp()->inherits( CircleImp::stype() ) ) ||
+ ( parents[0]->imp()->inherits( SegmentImp::stype() ) ) )
+ oc = fact->constrainedPointCalcer( parents[0], value );
+ else if ( parents[0]->imp()->inherits( LineImp::stype() ) )
{
- const LineData l = static_cast<const LineImp*>( tqparents[0]->imp() )->data();
+ const LineData l = static_cast<const LineImp*>( parents[0]->imp() )->data();
const Coordinate p = convertDrgeoLineParam( value, l );
- oc = fact->constrainedPointCalcer( tqparents[0], p, *ret );
+ oc = fact->constrainedPointCalcer( parents[0], p, *ret );
}
- else if ( tqparents[0]->imp()->inherits( RayImp::stype() ) )
+ else if ( parents[0]->imp()->inherits( RayImp::stype() ) )
{
- const LineData l = static_cast<const RayImp*>( tqparents[0]->imp() )->data();
+ const LineData l = static_cast<const RayImp*>( parents[0]->imp() )->data();
const Coordinate p = convertDrgeoHalflineParam( value, l );
- oc = fact->constrainedPointCalcer( tqparents[0], p, *ret );
+ oc = fact->constrainedPointCalcer( parents[0], p, *ret );
}
- else if ( tqparents[0]->imp()->inherits( ArcImp::stype() ) )
- oc = fact->constrainedPointCalcer( tqparents[0], 1 - value );
+ else if ( parents[0]->imp()->inherits( ArcImp::stype() ) )
+ oc = fact->constrainedPointCalcer( parents[0], 1 - value );
else
{
-// oc = fact->constrainedPointCalcer( tqparents[0], value );
+// oc = fact->constrainedPointCalcer( parents[0], value );
notSupported( file, i18n( "This Dr. Geo file contains a \"%1 %2\" object, "
"which Kig does not currently support." ).tqarg( domelem.tagName() ).tqarg(
domelem.attribute( "type" ) ) );
@@ -340,9 +340,9 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
}
else if ( domelem.attribute( "type" ) == "Intersection" )
{
- if ( ( tqparents[0]->imp()->inherits( AbstractLineImp::stype() ) ) &&
- ( tqparents[1]->imp()->inherits( AbstractLineImp::stype() ) ) )
- oc = new ObjectTypeCalcer( LineLineIntersectionType::instance(), tqparents );
+ if ( ( parents[0]->imp()->inherits( AbstractLineImp::stype() ) ) &&
+ ( parents[1]->imp()->inherits( AbstractLineImp::stype() ) ) )
+ oc = new ObjectTypeCalcer( LineLineIntersectionType::instance(), parents );
else
{
bool ok;
@@ -351,21 +351,21 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
if ( which == 1 ) which = -1;
else if ( which == 0 ) which = 1;
else KIG_FILTER_PARSE_ERROR;
- std::vector<ObjectCalcer*> args = tqparents;
+ std::vector<ObjectCalcer*> args = parents;
const ObjectType* type = 0;
args.push_back( new ObjectConstCalcer( new IntImp( which ) ) );
- if ( ( tqparents[0]->imp()->inherits( CircleImp::stype() ) ) &&
- ( tqparents[1]->imp()->inherits( CircleImp::stype() ) ) )
+ if ( ( parents[0]->imp()->inherits( CircleImp::stype() ) ) &&
+ ( parents[1]->imp()->inherits( CircleImp::stype() ) ) )
type = CircleCircleIntersectionType::instance();
- else if ( ( tqparents[0]->imp()->inherits( CircleImp::stype() ) &&
- tqparents[1]->imp()->inherits( AbstractLineImp::stype() ) ) ||
- ( tqparents[1]->imp()->inherits( CircleImp::stype() ) &&
- tqparents[0]->imp()->inherits( AbstractLineImp::stype() ) ) )
+ else if ( ( parents[0]->imp()->inherits( CircleImp::stype() ) &&
+ parents[1]->imp()->inherits( AbstractLineImp::stype() ) ) ||
+ ( parents[1]->imp()->inherits( CircleImp::stype() ) &&
+ parents[0]->imp()->inherits( AbstractLineImp::stype() ) ) )
type = ConicLineIntersectionType::instance();
- else if ( ( tqparents[0]->imp()->inherits( ArcImp::stype() ) &&
- tqparents[1]->imp()->inherits( AbstractLineImp::stype() ) ) ||
- ( tqparents[1]->imp()->inherits( ArcImp::stype() ) &&
- tqparents[0]->imp()->inherits( AbstractLineImp::stype() ) ) )
+ else if ( ( parents[0]->imp()->inherits( ArcImp::stype() ) &&
+ parents[1]->imp()->inherits( AbstractLineImp::stype() ) ) ||
+ ( parents[1]->imp()->inherits( ArcImp::stype() ) &&
+ parents[0]->imp()->inherits( AbstractLineImp::stype() ) ) )
type = ArcLineIntersectionType::instance();
else
{
@@ -377,13 +377,13 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
}
}
else if ( domelem.attribute( "type" ) == "Reflexion" )
- oc = new ObjectTypeCalcer( LineReflectionType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( LineReflectionType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Symmetry" )
- oc = new ObjectTypeCalcer( PointReflectionType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( PointReflectionType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Translation" )
- oc = new ObjectTypeCalcer( TranslatedType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( TranslatedType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Rotation" )
- oc = new ObjectTypeCalcer( RotationType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( RotationType::instance(), parents );
else
{
notSupported( file, i18n( "This Dr. Geo file contains a \"%1 %2\" object, "
@@ -423,7 +423,7 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
domelem.attribute( "type" ) ) );
return false;
}
- oc = new ObjectTypeCalcer( type, tqparents );
+ oc = new ObjectTypeCalcer( type, parents );
}
else if( domelem.attribute( "type" ) == "3pts" )
{
@@ -436,19 +436,19 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
domelem.attribute( "type" ) ) );
return false;
}
- oc = new ObjectTypeCalcer( type, tqparents );
+ oc = new ObjectTypeCalcer( type, parents );
}
else if( domelem.attribute( "type" ) == "segment" )
{
if( domelem.tagName() == "circle" )
{
type = CircleBPRType::instance();
- ObjectPropertyCalcer* o = fact->propertyObjectCalcer( tqparents[1], "length" );
+ ObjectPropertyCalcer* o = fact->propertyObjectCalcer( parents[1], "length" );
o->calc( *ret );
- ObjectCalcer* a = tqparents[0];
- tqparents.clear();
- tqparents.push_back( a );
- tqparents.push_back( o );
+ ObjectCalcer* a = parents[0];
+ parents.clear();
+ parents.push_back( a );
+ parents.push_back( o );
}
else
{
@@ -457,13 +457,13 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
domelem.attribute( "type" ) ) );
return false;
}
- oc = new ObjectTypeCalcer( type, tqparents );
+ oc = new ObjectTypeCalcer( type, parents );
}
else if( domelem.attribute( "type" ) == "npts" )
{
if( domelem.tagName() == "polygon" )
{
- if ( tqparents.size() < 3 ) KIG_FILTER_PARSE_ERROR;
+ if ( parents.size() < 3 ) KIG_FILTER_PARSE_ERROR;
type = PolygonBNPType::instance();
}
else
@@ -473,20 +473,20 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
domelem.attribute( "type" ) ) );
return false;
}
- oc = new ObjectTypeCalcer( type, tqparents );
+ oc = new ObjectTypeCalcer( type, parents );
}
else if ( domelem.attribute( "type" ) == "perpendicular" )
- oc = new ObjectTypeCalcer( LinePerpendLPType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( LinePerpendLPType::instance(), parents );
else if ( domelem.attribute( "type" ) == "parallel" )
- oc = new ObjectTypeCalcer( LineParallelLPType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( LineParallelLPType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Reflexion" )
- oc = new ObjectTypeCalcer( LineReflectionType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( LineReflectionType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Symmetry" )
- oc = new ObjectTypeCalcer( PointReflectionType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( PointReflectionType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Translation" )
- oc = new ObjectTypeCalcer( TranslatedType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( TranslatedType::instance(), parents );
else if ( domelem.attribute( "type" ) == "Rotation" )
- oc = new ObjectTypeCalcer( RotationType::instance(), tqparents );
+ oc = new ObjectTypeCalcer( RotationType::instance(), parents );
else
{
notSupported( file, i18n( "This Dr. Geo file contains a \"%1 %2\" object, "
@@ -534,71 +534,71 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
}
else if ( domelem.attribute( "type" ) == "pt_abscissa" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "coordinate-x", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "coordinate-x", *ret, false );
}
else if ( domelem.attribute( "type" ) == "pt_ordinate" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "coordinate-y", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "coordinate-y", *ret, false );
}
else if ( domelem.attribute( "type" ) == "segment_length" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "length", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "length", *ret, false );
}
else if ( domelem.attribute( "type" ) == "circle_perimeter" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "circumference", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "circumference", *ret, false );
}
else if ( domelem.attribute( "type" ) == "arc_length" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "arc-length", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "arc-length", *ret, false );
}
else if ( domelem.attribute( "type" ) == "distance_2pts" )
{
- if ( tqparents.size() != 2 ) KIG_FILTER_PARSE_ERROR;
- ObjectTypeCalcer* so = new ObjectTypeCalcer( SegmentABType::instance(), tqparents );
+ if ( parents.size() != 2 ) KIG_FILTER_PARSE_ERROR;
+ ObjectTypeCalcer* so = new ObjectTypeCalcer( SegmentABType::instance(), parents );
so->calc( *ret );
oc = filtersConstructTextObject( m, so, "length", *ret, false );
}
else if ( domelem.attribute( "type" ) == "vector_norm" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "length", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "length", *ret, false );
}
else if ( domelem.attribute( "type" ) == "vector_abscissa" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "length-x", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "length-x", *ret, false );
}
else if ( domelem.attribute( "type" ) == "vector_ordinate" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "length-y", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "length-y", *ret, false );
}
else if ( domelem.attribute( "type" ) == "slope" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "slope", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "slope", *ret, false );
}
else if ( domelem.attribute( "type" ) == "distance_pt_line" )
{
- if ( tqparents.size() != 2 ) KIG_FILTER_PARSE_ERROR;
+ if ( parents.size() != 2 ) KIG_FILTER_PARSE_ERROR;
std::vector<ObjectCalcer*> args;
- args.push_back( tqparents[1] );
- args.push_back( tqparents[0] );
+ args.push_back( parents[1] );
+ args.push_back( parents[0] );
ObjectTypeCalcer* po = new ObjectTypeCalcer( LinePerpendLPType::instance(), args );
po->calc( *ret );
args.clear();
- args.push_back( tqparents[1] );
+ args.push_back( parents[1] );
args.push_back( po );
ObjectTypeCalcer* io = new ObjectTypeCalcer( LineLineIntersectionType::instance(), args );
io->calc( *ret );
args.clear();
- args.push_back( tqparents[0] );
+ args.push_back( parents[0] );
args.push_back( io );
ObjectTypeCalcer* so = new ObjectTypeCalcer( SegmentABType::instance(), args );
so->calc( *ret );
@@ -607,13 +607,13 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
// types of 'equation'
else if ( domelem.attribute( "type" ) == "line" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "equation", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "equation", *ret, false );
}
else if ( domelem.attribute( "type" ) == "circle" )
{
- if ( tqparents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
- oc = filtersConstructTextObject( m, tqparents[0], "simply-cartesian-equation", *ret, false );
+ if ( parents.size() != 1 ) KIG_FILTER_PARSE_ERROR;
+ oc = filtersConstructTextObject( m, parents[0], "simply-cartesian-equation", *ret, false );
}
else
{
@@ -630,8 +630,8 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
{
if ( domelem.attribute( "type" ) == "3pts" )
{
- if ( tqparents.size() != 3 ) KIG_FILTER_PARSE_ERROR;
- oc = new ObjectTypeCalcer( HalfAngleType::instance(), tqparents );
+ if ( parents.size() != 3 ) KIG_FILTER_PARSE_ERROR;
+ oc = new ObjectTypeCalcer( HalfAngleType::instance(), parents );
}
else
{
@@ -669,7 +669,7 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
// since Kig doesn't support Guile scripts, it will write script's text
// in a label, so the user can freely see the code and make whatever
// he/she wants
- // possible idea: construct a new script object with the tqparents of Guile
+ // possible idea: construct a new script object with the parents of Guile
// one and the Guile code inserted commented... depends on a better
// handling of arguments in scripts?
if ( domelem.attribute( "type" ) == "nitems" )
@@ -685,7 +685,7 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
else if ( domelem.tagName() == "locus" )
{
if ( domelem.attribute( "type" ) == "None" )
- oc = fact->locusCalcer( tqparents[0], tqparents[1] );
+ oc = fact->locusCalcer( parents[0], parents[1] );
else
{
notSupported( file, i18n( "This Dr. Geo file contains a \"%1 %2\" object, "
@@ -747,8 +747,8 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
TQString ps = domelem.attribute( "style" );
int pointstyle = ObjectDrawer::pointStyleFromString( ps );
// show this object?
- bool show = ( ( domelem.attribute( "tqmasked" ) != "True" ) &&
- ( domelem.attribute( "tqmasked" ) != "Alway" ) );
+ bool show = ( ( domelem.attribute( "masked" ) != "True" ) &&
+ ( domelem.attribute( "masked" ) != "Alway" ) );
// costructing the ObjectDrawer*
ObjectDrawer* d = new ObjectDrawer( co, w, show, s, pointstyle );
// reading object name
@@ -779,7 +779,7 @@ KigDocument* KigFilterDrgeo::importFigure( TQDomNode f, const TQString& file, co
else if ( domelem.tagName() == "angle" )
{
oc2 = filtersConstructTextObject(
- static_cast<const PointImp*>( holders[curid-1-nignored]->calcer()->tqparents()[1]->imp() )->coordinate(),
+ static_cast<const PointImp*>( holders[curid-1-nignored]->calcer()->parents()[1]->imp() )->coordinate(),
holders[curid-1-nignored]->calcer(), "angle-degrees", *ret, false );
}