summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2008-07-04 22:52:34 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2008-07-04 22:52:34 +0000
commit53e243dd44711327f8912970fd46d1a46269d328 (patch)
tree5df6d56bd48cfa27557aaf90bf2db7a97197debb
parentconvert a path to guides using 2geom calls (diff)
downloadinkscape-53e243dd44711327f8912970fd46d1a46269d328.tar.gz
inkscape-53e243dd44711327f8912970fd46d1a46269d328.zip
use if(dynamic_cast<>) instead of if(typeid==) to check 2geom segment types for straightlines. this because the closing line segment is special class ClosingSegment : public LineSegment.
(bzr r6158)
-rw-r--r--src/display/inkscape-cairo.cpp7
-rw-r--r--src/display/nr-arena-shape.cpp12
-rw-r--r--src/helper/geom.cpp12
-rw-r--r--src/livarot/PathCutting.cpp8
4 files changed, 19 insertions, 20 deletions
diff --git a/src/display/inkscape-cairo.cpp b/src/display/inkscape-cairo.cpp
index 9a114f48e..b67ac1311 100644
--- a/src/display/inkscape-cairo.cpp
+++ b/src/display/inkscape-cairo.cpp
@@ -10,7 +10,6 @@
#include <cairo.h>
-#include <typeinfo>
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
@@ -160,9 +159,9 @@ feed_curve_to_cairo (cairo_t *ct, NArtBpath const *bpath, NR::Matrix trans, NR::
static void
feed_curve_to_cairo(cairo_t *cr, Geom::Curve const &c, Geom::Matrix & trans, Geom::Rect view, bool optimize_stroke)
{
- if( typeid(c) == typeid(Geom::LineSegment) ||
- typeid(c) == typeid(Geom::HLineSegment) ||
- typeid(c) == typeid(Geom::VLineSegment) )
+ if( dynamic_cast<Geom::LineSegment const*>(&c) ||
+ dynamic_cast<Geom::HLineSegment const*>(&c) ||
+ dynamic_cast<Geom::VLineSegment const*>(&c) )
{
Geom::Point end_tr = c.finalPoint() * trans;
if (!optimize_stroke) {
diff --git a/src/display/nr-arena-shape.cpp b/src/display/nr-arena-shape.cpp
index 6974b0008..23bf70be5 100644
--- a/src/display/nr-arena-shape.cpp
+++ b/src/display/nr-arena-shape.cpp
@@ -426,13 +426,13 @@ static bool has_inner_area(Geom::PathVector const & pv) {
if ( (pv.size() == 1) && (pv.front().size() <= 1) ) {
// vector has only one path with only one segment, see if that's a non-curve segment: that would mean no internal region
- Geom::Curve const & c = pv.front().front();
- if ( typeid(c) == typeid(Geom::LineSegment) )
- return false;
- if ( typeid(c) == typeid(Geom::HLineSegment) )
- return false;
- if ( typeid(c) == typeid(Geom::VLineSegment) )
+ Geom::Curve const * c = & pv.front().front();
+ if ( dynamic_cast<Geom::LineSegment const*>(c) ||
+ dynamic_cast<Geom::HLineSegment const*>(c) ||
+ dynamic_cast<Geom::VLineSegment const*>(c) )
+ {
return false;
+ }
}
return true; //too costly to see if it has region to be filled, so return true.
diff --git a/src/helper/geom.cpp b/src/helper/geom.cpp
index 9ec21a44d..9b3b98894 100644
--- a/src/helper/geom.cpp
+++ b/src/helper/geom.cpp
@@ -160,9 +160,9 @@ bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t)
for (Geom::Path::const_iterator cit = it->begin(); cit != it->end_open(); ++cit) {
Geom::Curve const &c = *cit;
- if( typeid(c) == typeid(Geom::LineSegment) ||
- typeid(c) == typeid(Geom::HLineSegment) ||
- typeid(c) == typeid(Geom::VLineSegment) )
+ if( dynamic_cast<Geom::LineSegment const*>(&c) ||
+ dynamic_cast<Geom::HLineSegment const*>(&c) ||
+ dynamic_cast<Geom::VLineSegment const*>(&c) )
{
bbox.expandTo( c.finalPoint() * t );
}
@@ -350,9 +350,9 @@ geom_curve_bbox_wind_distance(Geom::Curve const & c, Geom::Matrix const &m,
Geom::Coord tolerance, Geom::Rect const *viewbox,
Geom::Point &p0) // pass p0 through as it represents the last endpoint added (the finalPoint of last curve)
{
- if( typeid(c) == typeid(Geom::LineSegment) ||
- typeid(c) == typeid(Geom::HLineSegment) ||
- typeid(c) == typeid(Geom::VLineSegment) )
+ if( dynamic_cast<Geom::LineSegment const*>(&c) ||
+ dynamic_cast<Geom::HLineSegment const*>(&c) ||
+ dynamic_cast<Geom::VLineSegment const*>(&c) )
{
Geom::Point pe = c.finalPoint() * m;
if (bbox) {
diff --git a/src/livarot/PathCutting.cpp b/src/livarot/PathCutting.cpp
index 718017851..1ab2faf60 100644
--- a/src/livarot/PathCutting.cpp
+++ b/src/livarot/PathCutting.cpp
@@ -411,11 +411,11 @@ void* Path::MakeArtBPath(void)
void Path::AddCurve(Geom::Curve const &c)
{
- if( typeid(c) == typeid(Geom::LineSegment) ||
- typeid(c) == typeid(Geom::HLineSegment) ||
- typeid(c) == typeid(Geom::VLineSegment) )
+ if( dynamic_cast<Geom::LineSegment const*>(&c) ||
+ dynamic_cast<Geom::HLineSegment const*>(&c) ||
+ dynamic_cast<Geom::VLineSegment const*>(&c) )
{
- LineTo( to_2geom(c.finalPoint()) );
+ LineTo( from_2geom(c.finalPoint()) );
}
/*
else if(Geom::QuadraticBezier const *quadratic_bezier = dynamic_cast<Geom::QuadraticBezier const *>(c)) {