亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? opvalid.h

?? 一個很好的vc代碼
?? H
字號:
/********************************************************************** * $Id: opValid.h,v 1.7 2004/11/05 11:41:57 strk Exp $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation.  * See the COPYING file for more information. * ********************************************************************** * $Log: opValid.h,v $ * Revision 1.7  2004/11/05 11:41:57  strk * Made IsValidOp handle IllegalArgumentException throw from GeometryGraph * as a sign of invalidity (just for Polygon geometries). * Removed leaks generated by this specific exception. * * Revision 1.6  2004/09/13 12:39:14  strk * Made Point and MultiPoint subject to Validity tests. * * Revision 1.5  2004/09/13 10:12:49  strk * Added invalid coordinates checks in IsValidOp. * Cleanups. * * Revision 1.4  2004/09/13 09:18:10  strk * Added IsValidOp::isValid(Coordinate &) * * Revision 1.3  2004/07/19 13:19:31  strk * Documentation fixes * * Revision 1.2  2004/07/08 19:34:49  strk * Mirrored JTS interface of CoordinateSequence, factory and * default implementations. * Added DefaultCoordinateSequenceFactory::instance() function. * * Revision 1.1  2004/07/02 13:20:42  strk * Header files moved under geos/ dir. * * Revision 1.15  2004/05/18 00:02:37  ybychkov * IsValidOp::checkShellNotNested() bugfix from JTS 1.4.1 (not released yet) has been added. * * Revision 1.14  2004/03/29 06:59:24  ybychkov * "noding/snapround" package ported (JTS 1.4); * "operation", "operation/valid", "operation/relate" and "operation/overlay" upgraded to JTS 1.4; * "geom" partially upgraded. * * Revision 1.13  2003/11/07 01:23:42  pramsey * Add standard CVS headers licence notices and copyrights to all cpp and h * files. * * **********************************************************************/#ifndef GEOS_OPVALID_H#define GEOS_OPVALID_H#include <memory>#include <string>#include <vector>#include <map>#include <geos/platform.h>#include <geos/opRelate.h>#include <geos/indexSweepline.h>#include <geos/indexQuadtree.h>namespace geos {/* * Tests whether any of a set of {@link LinearRing}s are * nested inside another ring in the set, using a simple O(n^2) * comparison. * */class SimpleNestedRingTester {public:	SimpleNestedRingTester(GeometryGraph *newGraph);	~SimpleNestedRingTester();	void add(LinearRing *ring);	Coordinate& getNestedPoint();	bool isNonNested();private:	CGAlgorithms *cga;	GeometryGraph *graph;  // used to find non-node vertices	vector<LinearRing*> *rings;	Coordinate nestedPt;};/* * Contains information about the nature and location of a {@link Geometry} * validation error * */class TopologyValidationError {public:	enum {		ERROR,		REPEATED_POINT,		HOLE_OUTSIDE_SHELL,		NESTED_HOLES,		DISCONNECTED_INTERIOR,		SELF_INTERSECTION,		RING_SELF_INTERSECTION,		NESTED_SHELLS,		DUPLICATE_RINGS,		TOO_FEW_POINTS,		INVALID_COORDINATE	};	TopologyValidationError(int newErrorType,Coordinate newPt);	TopologyValidationError(int newErrorType);	Coordinate& getCoordinate();	string getMessage();	int getErrorType();	string toString();private:	static string errMsg[];	int errorType;	Coordinate pt;};/* * Implements the appropriate checks for repeated points * (consecutive identical coordinates) as defined in the * JTS spec. */class RepeatedPointTester {public:	RepeatedPointTester() {};	Coordinate& getCoordinate();	bool hasRepeatedPoint(const Geometry *g);	bool hasRepeatedPoint(const CoordinateSequence *coord);private:	Coordinate repeatedCoord;	bool hasRepeatedPoint(const Polygon *p);	bool hasRepeatedPoint(const GeometryCollection *gc);	bool hasRepeatedPoint(const MultiPolygon *gc);	bool hasRepeatedPoint(const MultiLineString *gc);};/* * Checks that a {@link GeometryGraph} representing an area * (a {@link Polygon} or {@link MultiPolygon} ) * is consistent with the SFS semantics for area geometries. * Checks include: * <ul> * <li>testing for rings which self-intersect (both properly * and at nodes) * <li>testing for duplicate rings * </ul> * If an inconsistency if found the location of the problem * is recorded. */class ConsistentAreaTester {private:	LineIntersector *li;	GeometryGraph *geomGraph;	RelateNodeGraph *nodeGraph;	// the intersection point found (if any)	Coordinate invalidPoint;	/**	* Check all nodes to see if their labels are consistent.	* If any are not, return false	*/	bool isNodeEdgeAreaLabelsConsistent();public:	ConsistentAreaTester(GeometryGraph *newGeomGraph);	~ConsistentAreaTester();	/**	* @return the intersection point, or <code>null</code> if none was found	*/	Coordinate& getInvalidPoint();	bool isNodeConsistentArea();	/**	* Checks for two duplicate rings in an area.	* Duplicate rings are rings that are topologically equal	* (that is, which have the same sequence of points up to point order).	* If the area is topologically consistent (determined by calling the	* <code>isNodeConsistentArea</code>,	* duplicate rings can be found by checking for EdgeBundles which contain	* more than one EdgeEnd.	* (This is because topologically consistent areas cannot have two rings sharing	* the same line segment, unless the rings are equal).	* The start point of one of the equal rings will be placed in	* invalidPoint.	*	* @return true if this area Geometry is topologically consistent but has two duplicate rings	*/	bool hasDuplicateRings();};/* * Tests whether any of a set of {@link LinearRing}s are * nested inside another ring in the set, using a {@link SweepLineIndex} * index to speed up the comparisons. * */class SweeplineNestedRingTester {public:	SweeplineNestedRingTester(GeometryGraph *newGraph);	~SweeplineNestedRingTester();	Coordinate& getNestedPoint();	void add(LinearRing* ring);	bool isNonNested();	bool isInside(LinearRing *innerRing,LinearRing *searchRing);	class OverlapAction: public SweepLineOverlapAction {	public:		bool isNonNested;		OverlapAction(SweeplineNestedRingTester *p);		void overlap(SweepLineInterval *s0, SweepLineInterval *s1);	private:		SweeplineNestedRingTester *parent;	};private:	CGAlgorithms *cga;	GeometryGraph *graph;  // used to find non-node vertices	vector<LinearRing*> *rings;	Envelope *totalEnv;	SweepLineIndex *sweepLine;	Coordinate nestedPt;	void buildIndex();};/* * Tests whether any of a set of {@link LinearRing}s are * nested inside another ring in the set, using a {@link Quadtree} * index to speed up the comparisons. * */class QuadtreeNestedRingTester {public:	QuadtreeNestedRingTester(GeometryGraph *newGraph);	virtual ~QuadtreeNestedRingTester();	Coordinate& getNestedPoint();	void add(LinearRing *ring);	bool isNonNested();private:	GeometryGraph *graph;  // used to find non-node vertices	vector<LinearRing*> *rings;	Envelope *totalEnv;	Quadtree *qt;	Coordinate nestedPt;	void buildQuadtree();};/* * This class tests that the interior of an area {@link Geometry} *  ({@link Polygon}  or {@link MultiPolygon} ) * is connected.  An area Geometry is invalid if the interior is disconnected. * This can happen if: * <ul> * <li>one or more holes either form a chain touching the shell at two places * <li>one or more holes form a ring around a portion of the interior * </ul> * If an inconsistency if found the location of the problem * is recorded. */class ConnectedInteriorTester {public:	ConnectedInteriorTester(GeometryGraph *newGeomGraph);	~ConnectedInteriorTester();	Coordinate& getCoordinate();	bool isInteriorsConnected();	static const Coordinate& findDifferentPoint(const CoordinateSequence *coord, const Coordinate& pt);private:	GeometryFactory *geometryFactory;	CGAlgorithms *cga;	GeometryGraph *geomGraph;	// save a coordinate for any disconnected interior found	// the coordinate will be somewhere on the ring surrounding the disconnected interior	Coordinate disconnectedRingcoord;	void setAllEdgesInResult(PlanarGraph *graph);	vector<EdgeRing*>* buildEdgeRings(vector<EdgeEnd*> *dirEdges);	/**	* Mark all the edges for the edgeRings corresponding to the shells	* of the input polygons.  Note only ONE ring gets marked for each shell.	*/	void visitShellInteriors(const Geometry *g, PlanarGraph *graph);	void visitInteriorRing(const LineString *ring, PlanarGraph *graph);	/**	* Check if any shell ring has an unvisited edge.	* A shell ring is a ring which is not a hole and which has the interior	* of the parent area on the RHS.	* (Note that there may be non-hole rings with the interior on the LHS,	* since the interior of holes will also be polygonized into CW rings	* by the linkAllDirectedEdges() step)	*	* @return true if there is an unvisited edge in a non-hole ring	*/	bool hasUnvisitedShellEdge(vector<EdgeRing*> *edgeRings);protected:	void visitLinkedDirectedEdges(DirectedEdge *start);};/* * Implements the algorithsm required to compute the <code>isValid()</code> method * for {@link Geometry}s. * */class IsValidOp {friend class Unload;public:	/**	* Find a point from the list of testCoords	* that is NOT a node in the edge for the list of searchCoords	*	* @return the point found, or <code>null</code> if none found	*/	static const Coordinate& findPtNotNode(const CoordinateSequence *testCoords,const LinearRing *searchRing, GeometryGraph *graph);	/**	 * Checks whether a coordinate is valid for processing.	 * Coordinates are valid iff their x and y coordinates are in the	 * range of the floating point representation.	 *	 * @param coord the coordinate to validate	 * @return <code>true</code> if the coordinate is valid	 */	static bool isValid(const Coordinate &coord);	IsValidOp(const Geometry *geom);	virtual ~IsValidOp();	bool isValid();	TopologyValidationError* getValidationError();private:	const Geometry *parentGeometry;  // the base Geometry to be validated	bool isChecked;	TopologyValidationError* validErr;	void checkValid(const Geometry *g);	void checkValid(const Point *g);	void checkValid(const LinearRing *g);	void checkValid(const LineString *g);	void checkValid(const Polygon *g);	void checkValid(const MultiPolygon *g);	void checkValid(const GeometryCollection *gc);	void checkConsistentArea(GeometryGraph *graph);	void checkNoSelfIntersectingRings(GeometryGraph *graph);	/**	* check that a ring does not self-intersect, except at its endpoints.	* Algorithm is to count the number of times each node along edge occurs.	* If any occur more than once, that must be a self-intersection.	*/	void checkSelfIntersectingRing(EdgeIntersectionList *eiList);	void checkTooFewPoints(GeometryGraph *graph);	/**	* Test that each hole is inside the polygon shell.	* This routine assumes that the holes have previously been tested	* to ensure that all vertices lie on the shell or inside it.	* A simple test of a single point in the hole can be used,	* provide the point is chosen such that it does not lie on the	* boundary of the shell.	*/	void checkHolesInShell(const Polygon *p,GeometryGraph *graph);//	void OLDcheckHolesInShell(Polygon *p);	/**	* Tests that no hole is nested inside another hole.	* This routine assumes that the holes are disjoint.	* To ensure this, holes have previously been tested	* to ensure that:	* <ul>	* <li>they do not partially overlap	* (checked by <code>checkRelateConsistency</code>)	* <li>they are not identical	* (checked by <code>checkRelateConsistency</code>)	* </ul>	*/	void checkHolesNotNested(const Polygon *p,GeometryGraph *graph);//	void SLOWcheckHolesNotNested(Polygon *p);	/**	* Test that no element polygon is wholly in the interior of another element polygon.	* TODO: It handles the case that one polygon is nested inside a hole of another.	* <p>	* Preconditions:	* <ul>	* <li>shells do not partially overlap	* <li>shells do not touch along an edge	* <li>no duplicate rings exist	* </ul>	* This routine relies on the fact that while polygon shells may touch at one or	* more vertices, they cannot touch at ALL vertices.	*/	void checkShellsNotNested(const MultiPolygon *mp,GeometryGraph *graph);	/**	* Check if a shell is incorrectly nested within a polygon.  This is the case	* if the shell is inside the polygon shell, but not inside a polygon hole.	* (If the shell is inside a polygon hole, the nesting is valid.)	* <p>	* The algorithm used relies on the fact that the rings must be properly contained.	* E.g. they cannot partially overlap (this has been previously checked by	* <code>checkRelateConsistency</code>	*/	void checkShellNotNested(const LinearRing *shell,const Polygon *p,GeometryGraph *graph);	/**	* This routine checks to see if a shell is properly contained in a hole.	*/	const Coordinate& checkShellInsideHole(const LinearRing *shell,const LinearRing *hole,GeometryGraph *graph);	void checkConnectedInteriors(GeometryGraph *graph);	void checkInvalidCoordinates(const CoordinateSequence *cs);	void checkInvalidCoordinates(const Polygon *poly);};}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99国产精品麻豆| 中文字幕欧美区| 青娱乐精品视频在线| 日韩欧美中文一区二区| 经典三级一区二区| 国产欧美日韩亚州综合| 波多野结衣中文一区| 一区二区三区精品视频| 欧美日本韩国一区二区三区视频| 日韩精品1区2区3区| 欧美成人一区二区三区片免费 | 国产欧美日本一区视频| 国产福利一区二区三区在线视频| 亚洲国产精品黑人久久久| 成人动漫精品一区二区| 亚洲一区二区在线视频| 日韩一级片网站| 大白屁股一区二区视频| 一区二区三区在线观看国产| 欧美精品久久久久久久多人混战 | 国产精品久久久久毛片软件| 色美美综合视频| 日本中文字幕一区二区视频| 亚洲精品一区在线观看| 色综合视频一区二区三区高清| 午夜免费久久看| 久久青草欧美一区二区三区| 91视频免费看| 日本成人在线电影网| 日本一区二区高清| 欧美二区乱c少妇| 国产成人啪免费观看软件| 一区二区三区在线免费| 精品国一区二区三区| 色哟哟一区二区| 精品一区二区三区不卡 | 亚洲免费观看高清完整版在线 | 中文字幕av一区 二区| 欧美日韩一区二区在线观看| 国产精品一区二区在线播放 | 一区二区三区高清| 精品剧情在线观看| 91国偷自产一区二区三区成为亚洲经典 | 成人国产视频在线观看| 日韩av中文字幕一区二区三区| 国产丝袜欧美中文另类| 欧美日本一区二区三区| www.日韩大片| 激情文学综合网| 午夜视频一区二区| 亚洲欧美日韩久久| 国产亚洲精品aa| 欧美一区二区国产| 欧美日韩在线不卡| 一本一道久久a久久精品综合蜜臀| 久久精品国产免费| 午夜天堂影视香蕉久久| 亚洲日穴在线视频| 国产女主播一区| www国产亚洲精品久久麻豆| 欧美日韩午夜影院| 欧美丝袜丝交足nylons| 99精品在线免费| 成人aaaa免费全部观看| 国产一区999| 韩国三级中文字幕hd久久精品| 五月天激情综合网| 肉色丝袜一区二区| 亚洲在线免费播放| 亚洲精品免费在线| 亚洲猫色日本管| 亚洲视频在线一区| 亚洲三级在线播放| 亚洲三级电影网站| 亚洲视频在线观看三级| 亚洲视频你懂的| 一区二区三区日本| 亚洲自拍偷拍av| 亚洲高清一区二区三区| 亚洲成a天堂v人片| 日韩电影在线一区| 蜜桃精品视频在线| 美女被吸乳得到大胸91| 久久国产福利国产秒拍| 韩国av一区二区三区四区| 经典三级一区二区| 高清免费成人av| 99久久夜色精品国产网站| 99这里只有久久精品视频| 93久久精品日日躁夜夜躁欧美| aa级大片欧美| 在线观看国产精品网站| 欧美日韩精品一区二区三区四区| 欧美日韩高清一区二区不卡 | 蜜桃视频免费观看一区| 麻豆精品视频在线观看| 国产一级精品在线| 成人福利在线看| 在线观看成人免费视频| 欧美精品1区2区| 亚洲精品一区二区三区福利| 国产日韩精品一区| 亚洲色图.com| 日韩激情一区二区| 久久激五月天综合精品| 成人免费高清在线观看| 色www精品视频在线观看| 在线91免费看| 国产欧美一区二区在线观看| **性色生活片久久毛片| 日韩电影免费在线看| 国产综合一区二区| 色成年激情久久综合| 欧美成人一区二区三区在线观看| 中文字幕av一区二区三区| 亚洲一区在线观看免费| 国内外成人在线视频| 色综合婷婷久久| 日韩精品中文字幕在线不卡尤物| 国产精品视频yy9299一区| 亚洲国产日韩精品| 国产美女一区二区| 91国偷自产一区二区开放时间| 日韩精品一区国产麻豆| 亚洲日本护士毛茸茸| 麻豆视频一区二区| 色综合久久六月婷婷中文字幕| 欧美va日韩va| 亚洲国产婷婷综合在线精品| 国产精品自拍三区| 69久久99精品久久久久婷婷| 国产精品久久精品日日| 美女尤物国产一区| 欧美在线免费观看视频| 中文字幕第一页久久| 日韩国产欧美在线观看| 97精品国产露脸对白| 久久影院电视剧免费观看| 亚洲丶国产丶欧美一区二区三区| 国产精品一二三| 日韩西西人体444www| 一区二区国产视频| 成人动漫精品一区二区| 久久女同互慰一区二区三区| 偷拍自拍另类欧美| 91蜜桃网址入口| 国产精品网友自拍| 国产一区啦啦啦在线观看| 91.com在线观看| 亚洲大片精品永久免费| 99精品在线观看视频| 中文天堂在线一区| 国产剧情一区在线| 日韩精品中文字幕在线不卡尤物| 亚洲成人黄色小说| 欧美色国产精品| 亚洲综合色成人| 91精品91久久久中77777| 中文字幕中文乱码欧美一区二区| 国产一区二区三区蝌蚪| 精品国内二区三区| 国模无码大尺度一区二区三区| 91精品国产91综合久久蜜臀| 亚洲18色成人| 欧美精品亚洲二区| 亚洲国产精品久久久久婷婷884| 色老汉av一区二区三区| 亚洲欧美二区三区| 色婷婷狠狠综合| 亚洲精品乱码久久久久久久久| 91网站在线播放| 亚洲精品日产精品乱码不卡| 色综合色综合色综合色综合色综合| 亚洲私人影院在线观看| 日本乱人伦aⅴ精品| 一区二区三区四区五区视频在线观看| 99久久精品国产毛片| 亚洲乱码日产精品bd| 欧美视频一二三区| 五月婷婷综合网| 日韩欧美国产1| 国产一区二区视频在线播放| 久久久久久一级片| 成年人国产精品| 亚洲乱码精品一二三四区日韩在线 | 国产大陆a不卡| 国产精品久久久久精k8| 91行情网站电视在线观看高清版| 尤物在线观看一区| 欧美精品v日韩精品v韩国精品v| 男人的天堂亚洲一区| 精品国产免费一区二区三区四区 | 成人手机在线视频| 亚洲日穴在线视频| 制服丝袜亚洲网站| 国产在线精品视频| 亚洲少妇30p| 欧美日本韩国一区二区三区视频 | 国产午夜精品一区二区| 91老师国产黑色丝袜在线|