quadtree/Key.h
/**********************************************************************
*
* GEOS - Geometry Engine Open Source
* http://geos.osgeo.org
*
* Copyright (C) 2009 Sandro Santilli <strk@kbt.io>
* Copyright (C) 2006 Refractions Research Inc.
* 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.
*
**********************************************************************
*
* Last port: index/quadtree/Key.java rev 1.8 (JTS-1.10)
*
**********************************************************************/
#pragma once
#include <geos/export.h>
#include <geos/geom/Coordinate.h> // for composition
#include <geos/geom/Envelope.h> // for composition
// Forward declarations
// ...
namespace geos {
namespace index { // geos::index
namespace quadtree { // geos::index::quadtree
class GEOS_DLL Key {
public:
// Doesn't touch the Envelope, might as well be const
static int computeQuadLevel(const geom::Envelope& env);
// Reference to argument won't be used after construction
Key(const geom::Envelope& itemEnv);
// used to be virtual, but I don't see subclasses...
~Key() = default;
const geom::Coordinate& getPoint() const;
int getLevel() const;
const geom::Envelope& getEnvelope() const;
geom::Coordinate* getCentre() const;
void computeKey(const geom::Envelope& itemEnv);
private:
// the fields which make up the key
// Owned by this class
geom::Coordinate pt;
int level;
// auxiliary data which is derived from the key for use in computation
geom::Envelope env;
void computeKey(int level, const geom::Envelope& itemEnv);
};
} // namespace geos::index::quadtree
} // namespace geos::index
} // namespace geos
geos::geom::Coordinate
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:217
geos::geom::Envelope
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition Envelope.h:59
geos::index::quadtree::Key::getEnvelope
const geom::Envelope & getEnvelope() const
Returned object ownership retained by this class.
geos::index::quadtree::Key::computeKey
void computeKey(const geom::Envelope &itemEnv)
geos::index::quadtree::Key::getCentre
geom::Coordinate * getCentre() const
Returns newly allocated object (ownership transferred).
geos::index::quadtree::Key::getPoint
const geom::Coordinate & getPoint() const
Returned object ownership retained by this class.
geos::index::quadtree
Contains classes that implement a Quadtree spatial index.
Definition CleanCoverage.h:40
geos::index
Provides classes for various kinds of spatial indexes.
Definition CleanCoverage.h:39
geos
Basic namespace for all GEOS functionalities.
Definition geos.h:38