mirror of https://github.com/KLayout/klayout.git
Introduced edge pairs as valid shapes for db::Shapes
This commit is contained in:
parent
b9b00a08b5
commit
8e19474095
|
|
@ -53,7 +53,7 @@ public:
|
||||||
typedef db::coord_traits<C> coord_traits;
|
typedef db::coord_traits<C> coord_traits;
|
||||||
typedef typename coord_traits::distance_type distance_type;
|
typedef typename coord_traits::distance_type distance_type;
|
||||||
typedef typename coord_traits::area_type area_type;
|
typedef typename coord_traits::area_type area_type;
|
||||||
typedef db::object_tag< edge<C> > tag;
|
typedef db::object_tag< edge_pair<C> > tag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The default constructor.
|
* @brief The default constructor.
|
||||||
|
|
@ -89,6 +89,24 @@ public:
|
||||||
// .. nothing else ..
|
// .. nothing else ..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The (dummy) translation operator
|
||||||
|
*/
|
||||||
|
void translate (const edge_pair<C> &d, db::generic_repository<C> &, db::ArrayRepository &)
|
||||||
|
{
|
||||||
|
*this = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The (dummy) translation operator
|
||||||
|
*/
|
||||||
|
template <class T>
|
||||||
|
void translate (const edge_pair<C> &d, const T &t, db::generic_repository<C> &, db::ArrayRepository &)
|
||||||
|
{
|
||||||
|
*this = d;
|
||||||
|
transform (t);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A less operator to establish a sorting order.
|
* @brief A less operator to establish a sorting order.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns the transformed edge set
|
* @brief Returns the transformed edge pair set
|
||||||
*/
|
*/
|
||||||
template <class T>
|
template <class T>
|
||||||
EdgePairs transformed (const T &trans) const
|
EdgePairs transformed (const T &trans) const
|
||||||
|
|
@ -230,7 +230,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Swap with the other region
|
* @brief Swaps with the other edge pair set
|
||||||
*/
|
*/
|
||||||
void swap (db::EdgePairs &other)
|
void swap (db::EdgePairs &other)
|
||||||
{
|
{
|
||||||
|
|
@ -240,7 +240,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Convert to polygons
|
* @brief Converts to polygons
|
||||||
*
|
*
|
||||||
* Note: because of the include hierarchy we can't use a direct return value.
|
* Note: because of the include hierarchy we can't use a direct return value.
|
||||||
*
|
*
|
||||||
|
|
@ -263,7 +263,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void edges (Edges &output) const;
|
void edges (Edges &output) const;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* @brief Returns the first edges
|
* @brief Returns the first edges
|
||||||
*
|
*
|
||||||
* Note: because of the include hierarchy we can't use a direct return value.
|
* Note: because of the include hierarchy we can't use a direct return value.
|
||||||
|
|
@ -273,7 +273,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void first_edges (Edges &output) const;
|
void first_edges (Edges &output) const;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* @brief Returns the second edges
|
* @brief Returns the second edges
|
||||||
*
|
*
|
||||||
* Note: because of the include hierarchy we can't use a direct return value.
|
* Note: because of the include hierarchy we can't use a direct return value.
|
||||||
|
|
|
||||||
1355
src/db/db/dbEdges.cc
1355
src/db/db/dbEdges.cc
File diff suppressed because it is too large
Load Diff
1232
src/db/db/dbEdges.h
1232
src/db/db/dbEdges.h
File diff suppressed because it is too large
Load Diff
|
|
@ -96,7 +96,7 @@ void FlatEdges::merged_semantics_changed ()
|
||||||
|
|
||||||
void FlatEdges::reserve (size_t n)
|
void FlatEdges::reserve (size_t n)
|
||||||
{
|
{
|
||||||
m_edges.reserve (db::Polygon::tag (), n);
|
m_edges.reserve (db::Edge::tag (), n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
#include "dbPolygon.h"
|
#include "dbPolygon.h"
|
||||||
#include "dbPath.h"
|
#include "dbPath.h"
|
||||||
#include "dbEdge.h"
|
#include "dbEdge.h"
|
||||||
|
#include "dbEdgePair.h"
|
||||||
#include "dbText.h"
|
#include "dbText.h"
|
||||||
#include "dbBox.h"
|
#include "dbBox.h"
|
||||||
#include "dbArray.h"
|
#include "dbArray.h"
|
||||||
|
|
@ -196,6 +197,9 @@ typedef object_with_properties<DPathRef> DPathRefWithProperties;
|
||||||
typedef object_with_properties<Edge> EdgeWithProperties;
|
typedef object_with_properties<Edge> EdgeWithProperties;
|
||||||
typedef object_with_properties<DEdge> DEdgeWithProperties;
|
typedef object_with_properties<DEdge> DEdgeWithProperties;
|
||||||
|
|
||||||
|
typedef object_with_properties<EdgePair> EdgePairWithProperties;
|
||||||
|
typedef object_with_properties<DEdgePair> DEdgePairWithProperties;
|
||||||
|
|
||||||
typedef object_with_properties<Text> TextWithProperties;
|
typedef object_with_properties<Text> TextWithProperties;
|
||||||
typedef object_with_properties<DText> DTextWithProperties;
|
typedef object_with_properties<DText> DTextWithProperties;
|
||||||
typedef object_with_properties<TextRef> TextRefWithProperties;
|
typedef object_with_properties<TextRef> TextRefWithProperties;
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,8 @@ db::properties_id_type Shape::prop_id () const
|
||||||
return (**((psimple_polygon_ptr_array_iter_type *) m_generic.iter)).properties_id ();
|
return (**((psimple_polygon_ptr_array_iter_type *) m_generic.iter)).properties_id ();
|
||||||
case Edge:
|
case Edge:
|
||||||
return (**((pedge_iter_type *) m_generic.iter)).properties_id ();
|
return (**((pedge_iter_type *) m_generic.iter)).properties_id ();
|
||||||
|
case EdgePair:
|
||||||
|
return (**((pedge_pair_iter_type *) m_generic.iter)).properties_id ();
|
||||||
case Path:
|
case Path:
|
||||||
return (**((ppath_iter_type *) m_generic.iter)).properties_id ();
|
return (**((ppath_iter_type *) m_generic.iter)).properties_id ();
|
||||||
case PathRef:
|
case PathRef:
|
||||||
|
|
@ -99,6 +101,8 @@ db::properties_id_type Shape::prop_id () const
|
||||||
return m_generic.psimple_polygon_aref->properties_id ();
|
return m_generic.psimple_polygon_aref->properties_id ();
|
||||||
case Edge:
|
case Edge:
|
||||||
return m_generic.pedge->properties_id ();
|
return m_generic.pedge->properties_id ();
|
||||||
|
case EdgePair:
|
||||||
|
return m_generic.pedge_pair->properties_id ();
|
||||||
case Path:
|
case Path:
|
||||||
return m_generic.ppath->properties_id ();
|
return m_generic.ppath->properties_id ();
|
||||||
case PathRef:
|
case PathRef:
|
||||||
|
|
@ -701,6 +705,8 @@ Shape::box_type Shape::bbox () const
|
||||||
return basic_ptr (text_ptr_array_type::tag ())->bbox (db::box_convert<text_ptr_type> ());
|
return basic_ptr (text_ptr_array_type::tag ())->bbox (db::box_convert<text_ptr_type> ());
|
||||||
case Edge:
|
case Edge:
|
||||||
return box_type (edge ().p1 (), edge ().p2 ());
|
return box_type (edge ().p1 (), edge ().p2 ());
|
||||||
|
case EdgePair:
|
||||||
|
return edge_pair ().bbox ();
|
||||||
case Path:
|
case Path:
|
||||||
return path ().box ();
|
return path ().box ();
|
||||||
case PathRef:
|
case PathRef:
|
||||||
|
|
@ -772,6 +778,9 @@ Shape::to_string () const
|
||||||
case Edge:
|
case Edge:
|
||||||
r = "edge " + edge ().to_string ();
|
r = "edge " + edge ().to_string ();
|
||||||
break;
|
break;
|
||||||
|
case EdgePair:
|
||||||
|
r = "edge_pair " + edge_pair ().to_string ();
|
||||||
|
break;
|
||||||
case Path:
|
case Path:
|
||||||
case PathRef:
|
case PathRef:
|
||||||
case PathPtrArrayMember:
|
case PathPtrArrayMember:
|
||||||
|
|
@ -810,6 +819,4 @@ Shape::to_string () const
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
#include "dbPolygon.h"
|
#include "dbPolygon.h"
|
||||||
#include "dbPath.h"
|
#include "dbPath.h"
|
||||||
#include "dbEdge.h"
|
#include "dbEdge.h"
|
||||||
|
#include "dbEdgePair.h"
|
||||||
#include "dbText.h"
|
#include "dbText.h"
|
||||||
#include "dbBox.h"
|
#include "dbBox.h"
|
||||||
#include "dbBoxConvert.h"
|
#include "dbBoxConvert.h"
|
||||||
|
|
@ -616,6 +617,7 @@ public:
|
||||||
typedef db::path_ref<path_type, unit_trans_type> path_ptr_type;
|
typedef db::path_ref<path_type, unit_trans_type> path_ptr_type;
|
||||||
typedef db::array<path_ptr_type, disp_type> path_ptr_array_type;
|
typedef db::array<path_ptr_type, disp_type> path_ptr_array_type;
|
||||||
typedef db::edge<coord_type> edge_type;
|
typedef db::edge<coord_type> edge_type;
|
||||||
|
typedef db::edge_pair<coord_type> edge_pair_type;
|
||||||
typedef db::text<coord_type> text_type;
|
typedef db::text<coord_type> text_type;
|
||||||
typedef db::text_ref<text_type, disp_type> text_ref_type;
|
typedef db::text_ref<text_type, disp_type> text_ref_type;
|
||||||
typedef db::text_ref<text_type, unit_trans_type> text_ptr_type;
|
typedef db::text_ref<text_type, unit_trans_type> text_ptr_type;
|
||||||
|
|
@ -642,6 +644,7 @@ public:
|
||||||
typedef tl::reuse_vector<db::path_ref<path_type, unit_trans_type> >::const_iterator path_ptr_iter_type;
|
typedef tl::reuse_vector<db::path_ref<path_type, unit_trans_type> >::const_iterator path_ptr_iter_type;
|
||||||
typedef tl::reuse_vector<db::array<path_ptr_type, disp_type> >::const_iterator path_ptr_array_iter_type;
|
typedef tl::reuse_vector<db::array<path_ptr_type, disp_type> >::const_iterator path_ptr_array_iter_type;
|
||||||
typedef tl::reuse_vector<db::edge<coord_type> >::const_iterator edge_iter_type;
|
typedef tl::reuse_vector<db::edge<coord_type> >::const_iterator edge_iter_type;
|
||||||
|
typedef tl::reuse_vector<db::edge_pair<coord_type> >::const_iterator edge_pair_iter_type;
|
||||||
typedef tl::reuse_vector<db::text<coord_type> >::const_iterator text_iter_type;
|
typedef tl::reuse_vector<db::text<coord_type> >::const_iterator text_iter_type;
|
||||||
typedef tl::reuse_vector<db::text_ref<text_type, disp_type> >::const_iterator text_ref_iter_type;
|
typedef tl::reuse_vector<db::text_ref<text_type, disp_type> >::const_iterator text_ref_iter_type;
|
||||||
typedef tl::reuse_vector<db::text_ref<text_type, unit_trans_type> >::const_iterator text_ptr_iter_type;
|
typedef tl::reuse_vector<db::text_ref<text_type, unit_trans_type> >::const_iterator text_ptr_iter_type;
|
||||||
|
|
@ -665,6 +668,7 @@ public:
|
||||||
typedef tl::reuse_vector<db::object_with_properties<db::path_ref<path_type, unit_trans_type> > >::const_iterator ppath_ptr_iter_type;
|
typedef tl::reuse_vector<db::object_with_properties<db::path_ref<path_type, unit_trans_type> > >::const_iterator ppath_ptr_iter_type;
|
||||||
typedef tl::reuse_vector<db::object_with_properties<db::array<path_ptr_type, disp_type> > >::const_iterator ppath_ptr_array_iter_type;
|
typedef tl::reuse_vector<db::object_with_properties<db::array<path_ptr_type, disp_type> > >::const_iterator ppath_ptr_array_iter_type;
|
||||||
typedef tl::reuse_vector<db::object_with_properties<db::edge<coord_type> > >::const_iterator pedge_iter_type;
|
typedef tl::reuse_vector<db::object_with_properties<db::edge<coord_type> > >::const_iterator pedge_iter_type;
|
||||||
|
typedef tl::reuse_vector<db::object_with_properties<db::edge_pair<coord_type> > >::const_iterator pedge_pair_iter_type;
|
||||||
typedef tl::reuse_vector<db::object_with_properties<db::text<coord_type> > >::const_iterator ptext_iter_type;
|
typedef tl::reuse_vector<db::object_with_properties<db::text<coord_type> > >::const_iterator ptext_iter_type;
|
||||||
typedef tl::reuse_vector<db::object_with_properties<db::text_ref<text_type, disp_type> > >::const_iterator ptext_ref_iter_type;
|
typedef tl::reuse_vector<db::object_with_properties<db::text_ref<text_type, disp_type> > >::const_iterator ptext_ref_iter_type;
|
||||||
typedef tl::reuse_vector<db::object_with_properties<db::text_ref<text_type, unit_trans_type> > >::const_iterator ptext_ptr_iter_type;
|
typedef tl::reuse_vector<db::object_with_properties<db::text_ref<text_type, unit_trans_type> > >::const_iterator ptext_ptr_iter_type;
|
||||||
|
|
@ -690,6 +694,7 @@ public:
|
||||||
SimplePolygonPtrArray,
|
SimplePolygonPtrArray,
|
||||||
SimplePolygonPtrArrayMember,
|
SimplePolygonPtrArrayMember,
|
||||||
Edge,
|
Edge,
|
||||||
|
EdgePair,
|
||||||
Path,
|
Path,
|
||||||
PathRef,
|
PathRef,
|
||||||
PathPtrArray,
|
PathPtrArray,
|
||||||
|
|
@ -1016,6 +1021,14 @@ public:
|
||||||
m_type = Edge;
|
m_type = Edge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a shape proxy as a reference to a edge pair
|
||||||
|
*/
|
||||||
|
void init (edge_pair_type::tag)
|
||||||
|
{
|
||||||
|
m_type = EdgePair;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Construct a shape proxy as a reference to a box
|
* @brief Construct a shape proxy as a reference to a box
|
||||||
*/
|
*/
|
||||||
|
|
@ -1344,6 +1357,22 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return the actual object that this shape reference is pointing to
|
||||||
|
*
|
||||||
|
* This is a generalisation of the polygon (), etc. methods using a tag to identify the
|
||||||
|
* target object.
|
||||||
|
*/
|
||||||
|
const edge_pair_type *basic_ptr (edge_pair_type::tag) const
|
||||||
|
{
|
||||||
|
tl_assert (m_type == EdgePair);
|
||||||
|
if (m_stable) {
|
||||||
|
return m_with_props ? &**(((pedge_pair_iter_type *) m_generic.iter)) : &**(((edge_pair_iter_type *) m_generic.iter));
|
||||||
|
} else {
|
||||||
|
return m_with_props ? m_generic.pedge_pair : m_generic.edge_pair;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Return the actual object that this shape reference is pointing to
|
* @brief Return the actual object that this shape reference is pointing to
|
||||||
*
|
*
|
||||||
|
|
@ -1636,6 +1665,23 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return the actual object that this shape reference is pointing to for objects with properties
|
||||||
|
*
|
||||||
|
* This is a generalisation of the polygon (), etc. methods using a tag to identify the
|
||||||
|
* target object.
|
||||||
|
*/
|
||||||
|
const db::object_with_properties<edge_pair_type> *basic_ptr (db::object_with_properties<edge_pair_type>::tag) const
|
||||||
|
{
|
||||||
|
tl_assert (m_type == EdgePair);
|
||||||
|
tl_assert (m_with_props);
|
||||||
|
if (m_stable) {
|
||||||
|
return &**(((pedge_pair_iter_type *) m_generic.iter));
|
||||||
|
} else {
|
||||||
|
return m_generic.pedge_pair;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Return the actual object that this shape reference is pointing to for objects with properties
|
* @brief Return the actual object that this shape reference is pointing to for objects with properties
|
||||||
*
|
*
|
||||||
|
|
@ -1862,6 +1908,15 @@ public:
|
||||||
return *(((edge_iter_type *) m_generic.iter));
|
return *(((edge_iter_type *) m_generic.iter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return the iterator (in stable reference mode) by tag
|
||||||
|
*/
|
||||||
|
edge_pair_iter_type basic_iter (edge_pair_type::tag) const
|
||||||
|
{
|
||||||
|
tl_assert (m_type == EdgePair && ! m_with_props);
|
||||||
|
return *(((edge_pair_iter_type *) m_generic.iter));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Return the iterator (in stable reference mode) by tag
|
* @brief Return the iterator (in stable reference mode) by tag
|
||||||
*/
|
*/
|
||||||
|
|
@ -2024,6 +2079,15 @@ public:
|
||||||
return *(((pedge_iter_type *) m_generic.iter));
|
return *(((pedge_iter_type *) m_generic.iter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return the iterator (in stable reference mode) by tag for objects with properties
|
||||||
|
*/
|
||||||
|
pedge_pair_iter_type basic_iter (db::object_with_properties<edge_pair_type>::tag) const
|
||||||
|
{
|
||||||
|
tl_assert (m_type == EdgePair && m_with_props);
|
||||||
|
return *(((pedge_pair_iter_type *) m_generic.iter));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Return the iterator (in stable reference mode) by tag for objects with properties
|
* @brief Return the iterator (in stable reference mode) by tag for objects with properties
|
||||||
*/
|
*/
|
||||||
|
|
@ -2288,6 +2352,49 @@ public:
|
||||||
return edge (p);
|
return edge (p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return a reference to the edge pair if one is referenced
|
||||||
|
*/
|
||||||
|
const edge_pair_type &edge_pair () const
|
||||||
|
{
|
||||||
|
tl_assert (m_type == EdgePair);
|
||||||
|
return *basic_ptr (edge_pair_type::tag ());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Test if the shape proxy points to a edge pair
|
||||||
|
*/
|
||||||
|
bool is_edge_pair () const
|
||||||
|
{
|
||||||
|
return (m_type == EdgePair);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Instantiate the edge pair object
|
||||||
|
*
|
||||||
|
* If an edge pair is referenced, this object is instantiated
|
||||||
|
* by this method.
|
||||||
|
* Returns true, if the conversion was successful.
|
||||||
|
*/
|
||||||
|
bool edge_pair (edge_pair_type &e) const
|
||||||
|
{
|
||||||
|
if (is_edge_pair ()) {
|
||||||
|
e = edge_pair ();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Alias for polymorphic expansion
|
||||||
|
* Returns true, if the conversion was successful.
|
||||||
|
*/
|
||||||
|
bool instantiate (edge_pair_type &p) const
|
||||||
|
{
|
||||||
|
return edge_pair (p);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Return a reference to the text if one is referenced
|
* @brief Return a reference to the text if one is referenced
|
||||||
*/
|
*/
|
||||||
|
|
@ -2567,6 +2674,7 @@ public:
|
||||||
const text_ref_type *text_ref;
|
const text_ref_type *text_ref;
|
||||||
const text_ptr_array_type *text_aref;
|
const text_ptr_array_type *text_aref;
|
||||||
const edge_type *edge;
|
const edge_type *edge;
|
||||||
|
const edge_pair_type *edge_pair;
|
||||||
const path_type *path;
|
const path_type *path;
|
||||||
const path_ref_type *path_ref;
|
const path_ref_type *path_ref;
|
||||||
const path_ptr_array_type *path_aref;
|
const path_ptr_array_type *path_aref;
|
||||||
|
|
@ -2586,6 +2694,7 @@ public:
|
||||||
const db::object_with_properties<text_ref_type> *ptext_ref;
|
const db::object_with_properties<text_ref_type> *ptext_ref;
|
||||||
const db::object_with_properties<text_ptr_array_type> *ptext_aref;
|
const db::object_with_properties<text_ptr_array_type> *ptext_aref;
|
||||||
const db::object_with_properties<edge_type> *pedge;
|
const db::object_with_properties<edge_type> *pedge;
|
||||||
|
const db::object_with_properties<edge_pair_type> *pedge_pair;
|
||||||
const db::object_with_properties<path_type> *ppath;
|
const db::object_with_properties<path_type> *ppath;
|
||||||
const db::object_with_properties<path_ref_type> *ppath_ref;
|
const db::object_with_properties<path_ref_type> *ppath_ref;
|
||||||
const db::object_with_properties<path_ptr_array_type> *ppath_aref;
|
const db::object_with_properties<path_ptr_array_type> *ppath_aref;
|
||||||
|
|
|
||||||
|
|
@ -634,6 +634,9 @@ ShapeIterator::advance_generic (int mode)
|
||||||
case Edge:
|
case Edge:
|
||||||
if (advance_shape<edge_type, StableTag, RegionTag> (mode)) return;
|
if (advance_shape<edge_type, StableTag, RegionTag> (mode)) return;
|
||||||
break;
|
break;
|
||||||
|
case EdgePair:
|
||||||
|
if (advance_shape<edge_pair_type, StableTag, RegionTag> (mode)) return;
|
||||||
|
break;
|
||||||
case Path:
|
case Path:
|
||||||
if (advance_shape<path_type, StableTag, RegionTag> (mode)) return;
|
if (advance_shape<path_type, StableTag, RegionTag> (mode)) return;
|
||||||
break;
|
break;
|
||||||
|
|
@ -758,6 +761,8 @@ ShapeIterator::quad_box_generic () const
|
||||||
return (quad_box_by_shape<simple_polygon_ptr_array_type, StableTag> (region_tag));
|
return (quad_box_by_shape<simple_polygon_ptr_array_type, StableTag> (region_tag));
|
||||||
case Edge:
|
case Edge:
|
||||||
return (quad_box_by_shape<edge_type, StableTag> (region_tag));
|
return (quad_box_by_shape<edge_type, StableTag> (region_tag));
|
||||||
|
case EdgePair:
|
||||||
|
return (quad_box_by_shape<edge_pair_type, StableTag> (region_tag));
|
||||||
case Path:
|
case Path:
|
||||||
return (quad_box_by_shape<path_type, StableTag> (region_tag));
|
return (quad_box_by_shape<path_type, StableTag> (region_tag));
|
||||||
case PathRef:
|
case PathRef:
|
||||||
|
|
|
||||||
|
|
@ -295,6 +295,8 @@ Shapes::do_insert (const Shapes::shape_type &shape, const Shapes::unit_trans_typ
|
||||||
return (insert_array_by_tag (shape_type::simple_polygon_ptr_array_type::tag (), shape, shape_repository (), pm));
|
return (insert_array_by_tag (shape_type::simple_polygon_ptr_array_type::tag (), shape, shape_repository (), pm));
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
return (insert_by_tag (shape_type::edge_type::tag (), shape, pm));
|
return (insert_by_tag (shape_type::edge_type::tag (), shape, pm));
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
return (insert_by_tag (shape_type::edge_pair_type::tag (), shape, pm));
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
return (insert_by_tag (shape_type::path_type::tag (), shape, pm));
|
return (insert_by_tag (shape_type::path_type::tag (), shape, pm));
|
||||||
case shape_type::PathRef:
|
case shape_type::PathRef:
|
||||||
|
|
@ -439,6 +441,16 @@ Shapes::do_insert (const Shapes::shape_type &shape, const Trans &t, tl::func_del
|
||||||
return insert (db::object_with_properties<shape_type::edge_type> (p, pm (shape.prop_id ())));
|
return insert (db::object_with_properties<shape_type::edge_type> (p, pm (shape.prop_id ())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
{
|
||||||
|
shape_type::edge_pair_type p (shape.edge_pair ());
|
||||||
|
p.transform (t);
|
||||||
|
if (! shape.has_prop_id ()) {
|
||||||
|
return insert (p);
|
||||||
|
} else {
|
||||||
|
return insert (db::object_with_properties<shape_type::edge_pair_type> (p, pm (shape.prop_id ())));
|
||||||
|
}
|
||||||
|
}
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
{
|
{
|
||||||
shape_type::path_type p (shape.path ());
|
shape_type::path_type p (shape.path ());
|
||||||
|
|
@ -554,6 +566,8 @@ Shapes::find (const Shapes::shape_type &shape) const
|
||||||
return find_shape_by_tag (shape_type::simple_polygon_ptr_array_type::tag (), shape);
|
return find_shape_by_tag (shape_type::simple_polygon_ptr_array_type::tag (), shape);
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
return find_shape_by_tag (shape_type::edge_type::tag (), shape);
|
return find_shape_by_tag (shape_type::edge_type::tag (), shape);
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
return find_shape_by_tag (shape_type::edge_pair_type::tag (), shape);
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
return find_shape_by_tag (shape_type::path_type::tag (), shape);
|
return find_shape_by_tag (shape_type::path_type::tag (), shape);
|
||||||
case shape_type::PathRef:
|
case shape_type::PathRef:
|
||||||
|
|
@ -620,6 +634,9 @@ Shapes::replace_prop_id (const Shapes::shape_type &ref, db::properties_id_type p
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
replace_prop_id (ref.basic_ptr (object_with_properties<shape_type::edge_type>::tag ()), prop_id);
|
replace_prop_id (ref.basic_ptr (object_with_properties<shape_type::edge_type>::tag ()), prop_id);
|
||||||
break;
|
break;
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
replace_prop_id (ref.basic_ptr (object_with_properties<shape_type::edge_pair_type>::tag ()), prop_id);
|
||||||
|
break;
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
replace_prop_id (ref.basic_ptr (object_with_properties<shape_type::path_type>::tag ()), prop_id);
|
replace_prop_id (ref.basic_ptr (object_with_properties<shape_type::path_type>::tag ()), prop_id);
|
||||||
break;
|
break;
|
||||||
|
|
@ -682,6 +699,8 @@ Shapes::replace_prop_id (const Shapes::shape_type &ref, db::properties_id_type p
|
||||||
return replace_prop_id_iter (shape_type::simple_polygon_ptr_array_type::tag (), ref.basic_iter (shape_type::simple_polygon_ptr_array_type::tag ()), prop_id);
|
return replace_prop_id_iter (shape_type::simple_polygon_ptr_array_type::tag (), ref.basic_iter (shape_type::simple_polygon_ptr_array_type::tag ()), prop_id);
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
return replace_prop_id_iter (shape_type::edge_type::tag (), ref.basic_iter (shape_type::edge_type::tag ()), prop_id);
|
return replace_prop_id_iter (shape_type::edge_type::tag (), ref.basic_iter (shape_type::edge_type::tag ()), prop_id);
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
return replace_prop_id_iter (shape_type::edge_pair_type::tag (), ref.basic_iter (shape_type::edge_pair_type::tag ()), prop_id);
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
return replace_prop_id_iter (shape_type::path_type::tag (), ref.basic_iter (shape_type::path_type::tag ()), prop_id);
|
return replace_prop_id_iter (shape_type::path_type::tag (), ref.basic_iter (shape_type::path_type::tag ()), prop_id);
|
||||||
case shape_type::PathRef:
|
case shape_type::PathRef:
|
||||||
|
|
@ -759,6 +778,12 @@ Shapes::transform (const Shapes::shape_type &ref, const Trans &t)
|
||||||
p.transform (t);
|
p.transform (t);
|
||||||
return replace_member_with_props (shape_type::edge_type::tag (), ref, p);
|
return replace_member_with_props (shape_type::edge_type::tag (), ref, p);
|
||||||
}
|
}
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
{
|
||||||
|
shape_type::edge_pair_type p (ref.edge_pair ());
|
||||||
|
p.transform (t);
|
||||||
|
return replace_member_with_props (shape_type::edge_pair_type::tag (), ref, p);
|
||||||
|
}
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
{
|
{
|
||||||
shape_type::path_type p (ref.path ());
|
shape_type::path_type p (ref.path ());
|
||||||
|
|
@ -845,6 +870,8 @@ Shapes::replace (const Shapes::shape_type &ref, const Sh &sh)
|
||||||
return replace_member_with_props (shape_type::simple_polygon_ptr_array_type::tag (), ref, sh);
|
return replace_member_with_props (shape_type::simple_polygon_ptr_array_type::tag (), ref, sh);
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
return replace_member_with_props (shape_type::edge_type::tag (), ref, sh);
|
return replace_member_with_props (shape_type::edge_type::tag (), ref, sh);
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
return replace_member_with_props (shape_type::edge_pair_type::tag (), ref, sh);
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
return replace_member_with_props (shape_type::path_type::tag (), ref, sh);
|
return replace_member_with_props (shape_type::path_type::tag (), ref, sh);
|
||||||
case shape_type::PathRef:
|
case shape_type::PathRef:
|
||||||
|
|
@ -1212,6 +1239,7 @@ template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const Polygon &);
|
||||||
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const SimplePolygon &);
|
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const SimplePolygon &);
|
||||||
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const Text &);
|
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const Text &);
|
||||||
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const Edge &);
|
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const Edge &);
|
||||||
|
template DB_PUBLIC Shape Shapes::replace<>(const Shape &, const EdgePair &);
|
||||||
|
|
||||||
template DB_PUBLIC Shape Shapes::transform<> (const Shape &, const ICplxTrans &);
|
template DB_PUBLIC Shape Shapes::transform<> (const Shape &, const ICplxTrans &);
|
||||||
template DB_PUBLIC Shape Shapes::transform<> (const Shape &, const Trans &);
|
template DB_PUBLIC Shape Shapes::transform<> (const Shape &, const Trans &);
|
||||||
|
|
@ -1239,6 +1267,8 @@ template class DB_PUBLIC layer_op<db::Shape::path_ptr_array_type, db::stable_lay
|
||||||
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::Shape::edge_type, db::stable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::Shape::edge_type, db::stable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag>;
|
||||||
|
template class DB_PUBLIC layer_op<db::Shape::edge_pair_type, db::stable_layer_tag>;
|
||||||
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::edge_pair_type>, db::stable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::Shape::text_type, db::stable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::Shape::text_type, db::stable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::Shape::text_ref_type, db::stable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::Shape::text_ref_type, db::stable_layer_tag>;
|
||||||
|
|
@ -1275,6 +1305,8 @@ template class DB_PUBLIC layer_op<db::Shape::path_ptr_array_type, db::unstable_l
|
||||||
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::Shape::edge_type, db::unstable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::Shape::edge_type, db::unstable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag>;
|
||||||
|
template class DB_PUBLIC layer_op<db::Shape::edge_pair_type, db::unstable_layer_tag>;
|
||||||
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::edge_pair_type>, db::unstable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::Shape::text_type, db::unstable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::Shape::text_type, db::unstable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag>;
|
||||||
template class DB_PUBLIC layer_op<db::Shape::text_ref_type, db::unstable_layer_tag>;
|
template class DB_PUBLIC layer_op<db::Shape::text_ref_type, db::unstable_layer_tag>;
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,7 @@ public:
|
||||||
typedef db::array<path_ptr_type, disp_type> path_ptr_array_type;
|
typedef db::array<path_ptr_type, disp_type> path_ptr_array_type;
|
||||||
typedef path_ptr_array_type::iterator path_ptr_array_iterator_type;
|
typedef path_ptr_array_type::iterator path_ptr_array_iterator_type;
|
||||||
typedef db::edge<coord_type> edge_type;
|
typedef db::edge<coord_type> edge_type;
|
||||||
|
typedef db::edge_pair<coord_type> edge_pair_type;
|
||||||
typedef db::text<coord_type> text_type;
|
typedef db::text<coord_type> text_type;
|
||||||
typedef db::text_ref<text_type, disp_type> text_ref_type;
|
typedef db::text_ref<text_type, disp_type> text_ref_type;
|
||||||
typedef db::text_ref<text_type, unit_trans_type> text_ptr_type;
|
typedef db::text_ref<text_type, unit_trans_type> text_ptr_type;
|
||||||
|
|
@ -126,18 +127,19 @@ public:
|
||||||
SimplePolygonRef = 4,
|
SimplePolygonRef = 4,
|
||||||
SimplePolygonPtrArray = 5,
|
SimplePolygonPtrArray = 5,
|
||||||
Edge = 6,
|
Edge = 6,
|
||||||
Path = 7,
|
EdgePair = 7,
|
||||||
PathRef = 8,
|
Path = 8,
|
||||||
PathPtrArray = 9,
|
PathRef = 9,
|
||||||
Box = 10,
|
PathPtrArray = 10,
|
||||||
BoxArray = 11,
|
Box = 11,
|
||||||
ShortBox = 12,
|
BoxArray = 12,
|
||||||
ShortBoxArray = 13,
|
ShortBox = 13,
|
||||||
Text = 14,
|
ShortBoxArray = 14,
|
||||||
TextRef = 15,
|
Text = 15,
|
||||||
TextPtrArray = 16,
|
TextRef = 16,
|
||||||
UserObject = 17,
|
TextPtrArray = 17,
|
||||||
Null = 18 // must be last!
|
UserObject = 18,
|
||||||
|
Null = 19 // must be last!
|
||||||
};
|
};
|
||||||
|
|
||||||
enum flags_type
|
enum flags_type
|
||||||
|
|
@ -151,6 +153,7 @@ public:
|
||||||
| (1 << SimplePolygonRef)
|
| (1 << SimplePolygonRef)
|
||||||
| (1 << SimplePolygonPtrArray),
|
| (1 << SimplePolygonPtrArray),
|
||||||
Edges = (1 << Edge),
|
Edges = (1 << Edge),
|
||||||
|
EdgePairs = (1 << EdgePair),
|
||||||
Paths = (1 << Path)
|
Paths = (1 << Path)
|
||||||
| (1 << PathRef)
|
| (1 << PathRef)
|
||||||
| (1 << PathPtrArray),
|
| (1 << PathPtrArray),
|
||||||
|
|
@ -352,14 +355,15 @@ private:
|
||||||
char sz8 [sizeof (per_shape_iter_size <path_ref_type>)];
|
char sz8 [sizeof (per_shape_iter_size <path_ref_type>)];
|
||||||
char sz9 [sizeof (per_shape_iter_size <path_ptr_array_type>)];
|
char sz9 [sizeof (per_shape_iter_size <path_ptr_array_type>)];
|
||||||
char sz10 [sizeof (per_shape_iter_size <edge_type>)];
|
char sz10 [sizeof (per_shape_iter_size <edge_type>)];
|
||||||
char sz11 [sizeof (per_shape_iter_size <box_type>)];
|
char sz11 [sizeof (per_shape_iter_size <edge_pair_type>)];
|
||||||
char sz12 [sizeof (per_shape_iter_size <box_array_type>)];
|
char sz12 [sizeof (per_shape_iter_size <box_type>)];
|
||||||
char sz13 [sizeof (per_shape_iter_size <short_box_type>)];
|
char sz13 [sizeof (per_shape_iter_size <box_array_type>)];
|
||||||
char sz14 [sizeof (per_shape_iter_size <short_box_array_type>)];
|
char sz14 [sizeof (per_shape_iter_size <short_box_type>)];
|
||||||
char sz15 [sizeof (per_shape_iter_size <text_type>)];
|
char sz15 [sizeof (per_shape_iter_size <short_box_array_type>)];
|
||||||
char sz16 [sizeof (per_shape_iter_size <text_ref_type>)];
|
char sz16 [sizeof (per_shape_iter_size <text_type>)];
|
||||||
char sz17 [sizeof (per_shape_iter_size <text_ptr_array_type>)];
|
char sz17 [sizeof (per_shape_iter_size <text_ref_type>)];
|
||||||
char sz18 [sizeof (per_shape_iter_size <user_object_type>)];
|
char sz18 [sizeof (per_shape_iter_size <text_ptr_array_type>)];
|
||||||
|
char sz19 [sizeof (per_shape_iter_size <user_object_type>)];
|
||||||
};
|
};
|
||||||
|
|
||||||
// this union is simply there to determine the maximum size required for all
|
// this union is simply there to determine the maximum size required for all
|
||||||
|
|
|
||||||
|
|
@ -673,6 +673,12 @@ inline unsigned int iterator_type_mask (ShapeIterator::edge_type::tag)
|
||||||
return 1 << ShapeIterator::Edge;
|
return 1 << ShapeIterator::Edge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief Internal: ShapeIterator masks per shape type
|
||||||
|
inline unsigned int iterator_type_mask (ShapeIterator::edge_pair_type::tag)
|
||||||
|
{
|
||||||
|
return 1 << ShapeIterator::EdgePair;
|
||||||
|
}
|
||||||
|
|
||||||
/// @brief Internal: ShapeIterator masks per shape type
|
/// @brief Internal: ShapeIterator masks per shape type
|
||||||
inline unsigned int iterator_type_mask (ShapeIterator::path_type::tag)
|
inline unsigned int iterator_type_mask (ShapeIterator::path_type::tag)
|
||||||
{
|
{
|
||||||
|
|
@ -917,6 +923,8 @@ template class layer_class<db::Shape::path_ptr_array_type, db::stable_layer_tag>
|
||||||
template class layer_class<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag>;
|
template class layer_class<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag>;
|
||||||
template class layer_class<db::Shape::edge_type, db::stable_layer_tag>;
|
template class layer_class<db::Shape::edge_type, db::stable_layer_tag>;
|
||||||
template class layer_class<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag>;
|
template class layer_class<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag>;
|
||||||
|
template class layer_class<db::Shape::edge_pair_type, db::stable_layer_tag>;
|
||||||
|
template class layer_class<db::object_with_properties<db::Shape::edge_pair_type>, db::stable_layer_tag>;
|
||||||
template class layer_class<db::Shape::text_type, db::stable_layer_tag>;
|
template class layer_class<db::Shape::text_type, db::stable_layer_tag>;
|
||||||
template class layer_class<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag>;
|
template class layer_class<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag>;
|
||||||
template class layer_class<db::Shape::text_ref_type, db::stable_layer_tag>;
|
template class layer_class<db::Shape::text_ref_type, db::stable_layer_tag>;
|
||||||
|
|
@ -953,6 +961,8 @@ template class layer_class<db::Shape::path_ptr_array_type, db::unstable_layer_ta
|
||||||
template class layer_class<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag>;
|
template class layer_class<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag>;
|
||||||
template class layer_class<db::Shape::edge_type, db::unstable_layer_tag>;
|
template class layer_class<db::Shape::edge_type, db::unstable_layer_tag>;
|
||||||
template class layer_class<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag>;
|
template class layer_class<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag>;
|
||||||
|
template class layer_class<db::Shape::edge_pair_type, db::unstable_layer_tag>;
|
||||||
|
template class layer_class<db::object_with_properties<db::Shape::edge_pair_type>, db::unstable_layer_tag>;
|
||||||
template class layer_class<db::Shape::text_type, db::unstable_layer_tag>;
|
template class layer_class<db::Shape::text_type, db::unstable_layer_tag>;
|
||||||
template class layer_class<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag>;
|
template class layer_class<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag>;
|
||||||
template class layer_class<db::Shape::text_ref_type, db::unstable_layer_tag>;
|
template class layer_class<db::Shape::text_ref_type, db::unstable_layer_tag>;
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,8 @@ template DB_PUBLIC layer<db::Shape::path_ptr_array_type, db::stable_layer_tag> &
|
||||||
template DB_PUBLIC layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> ();
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::Shape::edge_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::stable_layer_tag> ();
|
template DB_PUBLIC layer<db::Shape::edge_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::stable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> ();
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> ();
|
||||||
|
template DB_PUBLIC layer<db::Shape::edge_pair_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::edge_pair_type, db::stable_layer_tag> ();
|
||||||
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::edge_pair_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_pair_type>, db::stable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::Shape::text_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::stable_layer_tag> ();
|
template DB_PUBLIC layer<db::Shape::text_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::stable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> ();
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::Shape::text_ref_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::stable_layer_tag> ();
|
template DB_PUBLIC layer<db::Shape::text_ref_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::stable_layer_tag> ();
|
||||||
|
|
@ -153,6 +155,8 @@ template DB_PUBLIC layer<db::Shape::path_ptr_array_type, db::unstable_layer_tag>
|
||||||
template DB_PUBLIC layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> ();
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::Shape::edge_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::unstable_layer_tag> ();
|
template DB_PUBLIC layer<db::Shape::edge_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::unstable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> ();
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> ();
|
||||||
|
template DB_PUBLIC layer<db::Shape::edge_pair_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::edge_pair_type, db::unstable_layer_tag> ();
|
||||||
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::edge_pair_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_pair_type>, db::unstable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::Shape::text_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::unstable_layer_tag> ();
|
template DB_PUBLIC layer<db::Shape::text_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::unstable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> ();
|
template DB_PUBLIC layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> ();
|
||||||
template DB_PUBLIC layer<db::Shape::text_ref_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::unstable_layer_tag> ();
|
template DB_PUBLIC layer<db::Shape::text_ref_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::unstable_layer_tag> ();
|
||||||
|
|
@ -190,6 +194,8 @@ template DB_PUBLIC const layer<db::Shape::path_ptr_array_type, db::stable_layer_
|
||||||
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::stable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::Shape::edge_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::stable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::Shape::edge_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::stable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::stable_layer_tag> () const;
|
||||||
|
template DB_PUBLIC const layer<db::Shape::edge_pair_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::edge_pair_type, db::stable_layer_tag> () const;
|
||||||
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::edge_pair_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_pair_type>, db::stable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::Shape::text_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::stable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::Shape::text_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::stable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::stable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::Shape::text_ref_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::stable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::Shape::text_ref_type, db::stable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::stable_layer_tag> () const;
|
||||||
|
|
@ -226,6 +232,8 @@ template DB_PUBLIC const layer<db::Shape::path_ptr_array_type, db::unstable_laye
|
||||||
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::path_ptr_array_type>, db::unstable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::Shape::edge_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::unstable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::Shape::edge_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::edge_type, db::unstable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_type>, db::unstable_layer_tag> () const;
|
||||||
|
template DB_PUBLIC const layer<db::Shape::edge_pair_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::edge_pair_type, db::unstable_layer_tag> () const;
|
||||||
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::edge_pair_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::edge_pair_type>, db::unstable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::Shape::text_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::unstable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::Shape::text_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_type, db::unstable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> &Shapes::get_layer<db::object_with_properties<db::Shape::text_type>, db::unstable_layer_tag> () const;
|
||||||
template DB_PUBLIC const layer<db::Shape::text_ref_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::unstable_layer_tag> () const;
|
template DB_PUBLIC const layer<db::Shape::text_ref_type, db::unstable_layer_tag> &Shapes::get_layer<db::Shape::text_ref_type, db::unstable_layer_tag> () const;
|
||||||
|
|
@ -282,6 +290,8 @@ Shapes::is_valid (const Shapes::shape_type &shape) const
|
||||||
return is_valid_shape_by_tag (shape_type::simple_polygon_ptr_array_type::tag (), shape);
|
return is_valid_shape_by_tag (shape_type::simple_polygon_ptr_array_type::tag (), shape);
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
return is_valid_shape_by_tag (shape_type::edge_type::tag (), shape);
|
return is_valid_shape_by_tag (shape_type::edge_type::tag (), shape);
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
return is_valid_shape_by_tag (shape_type::edge_pair_type::tag (), shape);
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
return is_valid_shape_by_tag (shape_type::path_type::tag (), shape);
|
return is_valid_shape_by_tag (shape_type::path_type::tag (), shape);
|
||||||
case shape_type::PathRef:
|
case shape_type::PathRef:
|
||||||
|
|
@ -440,6 +450,9 @@ Shapes::erase_shape (const Shapes::shape_type &shape)
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
erase_shape_by_tag (shape_type::edge_type::tag (), shape);
|
erase_shape_by_tag (shape_type::edge_type::tag (), shape);
|
||||||
break;
|
break;
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
erase_shape_by_tag (shape_type::edge_pair_type::tag (), shape);
|
||||||
|
break;
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
erase_shape_by_tag (shape_type::path_type::tag (), shape);
|
erase_shape_by_tag (shape_type::path_type::tag (), shape);
|
||||||
break;
|
break;
|
||||||
|
|
@ -532,6 +545,9 @@ Shapes::erase_shapes (const std::vector<Shapes::shape_type> &shapes)
|
||||||
case shape_type::Edge:
|
case shape_type::Edge:
|
||||||
erase_shapes_by_tag (shape_type::edge_type::tag (), s, snext);
|
erase_shapes_by_tag (shape_type::edge_type::tag (), s, snext);
|
||||||
break;
|
break;
|
||||||
|
case shape_type::EdgePair:
|
||||||
|
erase_shapes_by_tag (shape_type::edge_pair_type::tag (), s, snext);
|
||||||
|
break;
|
||||||
case shape_type::Path:
|
case shape_type::Path:
|
||||||
erase_shapes_by_tag (shape_type::path_type::tag (), s, snext);
|
erase_shapes_by_tag (shape_type::path_type::tag (), s, snext);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,16 @@ std::string shapes_to_string_norm (tl::TestBase *_this, const db::Shapes &shapes
|
||||||
r += "path " + p.to_string ();
|
r += "path " + p.to_string ();
|
||||||
EXPECT_EQ (p.box ().to_string (), shape->bbox ().to_string ());
|
EXPECT_EQ (p.box ().to_string (), shape->bbox ().to_string ());
|
||||||
EXPECT_EQ (p.area (), shape->area ());
|
EXPECT_EQ (p.area (), shape->area ());
|
||||||
|
} else if (shape->is_edge ()) {
|
||||||
|
db::Shape::edge_type p;
|
||||||
|
shape->edge (p);
|
||||||
|
r += "edge " + p.to_string ();
|
||||||
|
EXPECT_EQ (p.bbox ().to_string (), shape->bbox ().to_string ());
|
||||||
|
} else if (shape->is_edge_pair ()) {
|
||||||
|
db::Shape::edge_pair_type p;
|
||||||
|
shape->edge_pair (p);
|
||||||
|
r += "edge_pair " + p.to_string ();
|
||||||
|
EXPECT_EQ (p.bbox ().to_string (), shape->bbox ().to_string ());
|
||||||
} else if (shape->is_text ()) {
|
} else if (shape->is_text ()) {
|
||||||
db::Shape::text_type p;
|
db::Shape::text_type p;
|
||||||
shape->text (p);
|
shape->text (p);
|
||||||
|
|
@ -3263,6 +3273,42 @@ TEST(22)
|
||||||
EXPECT_EQ (shapes.find (*s).to_string (), "null");
|
EXPECT_EQ (shapes.find (*s).to_string (), "null");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Edge pairs
|
||||||
|
TEST(23)
|
||||||
|
{
|
||||||
|
db::Manager m;
|
||||||
|
db::Shapes s (&m, 0, db::default_editable_mode ());
|
||||||
|
db::Box b_empty;
|
||||||
|
|
||||||
|
s.update_bbox ();
|
||||||
|
EXPECT_EQ (s.bbox (), b_empty);
|
||||||
|
|
||||||
|
db::EdgePair ep (db::Edge (-100, -200, 0, 0), db::Edge (0, -100, 100, 100));
|
||||||
|
s.insert (ep);
|
||||||
|
s.update_bbox ();
|
||||||
|
EXPECT_EQ (s.bbox (), db::Box (-100, -200, 100, 100));
|
||||||
|
|
||||||
|
db::ShapeIterator si = s.begin (db::ShapeIterator::EdgePairs);
|
||||||
|
EXPECT_EQ (!si.at_end (), true);
|
||||||
|
EXPECT_EQ (si->edge_pair ().to_string (), "(-100,-200;0,0)/(0,-100;100,100)");
|
||||||
|
EXPECT_EQ (si->is_edge_pair (), true);
|
||||||
|
|
||||||
|
db::EdgePair ep2;
|
||||||
|
si->instantiate (ep2);
|
||||||
|
EXPECT_EQ (ep2.to_string (), "(-100,-200;0,0)/(0,-100;100,100)");
|
||||||
|
|
||||||
|
++si;
|
||||||
|
EXPECT_EQ (si.at_end (), true);
|
||||||
|
|
||||||
|
db::Shapes s2 = s;
|
||||||
|
EXPECT_EQ (shapes_to_string_norm (_this, s2), "edge_pair (-100,-200;0,0)/(0,-100;100,100) #0\n");
|
||||||
|
|
||||||
|
s2.clear ();
|
||||||
|
s2.insert (db::EdgePairWithProperties (db::EdgePair (db::Edge (0, 0, 1, 1), db::Edge (10, 10, 11, 11)), 17));
|
||||||
|
|
||||||
|
EXPECT_EQ (shapes_to_string_norm (_this, s2), "edge_pair (0,0;1,1)/(10,10;11,11) #17\n");
|
||||||
|
}
|
||||||
|
|
||||||
// Bug #107
|
// Bug #107
|
||||||
TEST(100)
|
TEST(100)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue