aboutsummaryrefslogtreecommitdiff
path: root/src/grids.hpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-01-20 15:01:33 +0100
committerGitHub <noreply@github.com>2020-01-20 15:01:33 +0100
commita6390b59ae2bad2a763e7ab3341ee4c80e708b3d (patch)
tree26d5016def90e3e9f71a51da694ff3028e1006ed /src/grids.hpp
parentf1209ff020cc9f5490f8e6c7edced6877f53da49 (diff)
parent90b6685a990b8c4931aafb508853401a89163e78 (diff)
downloadPROJ-a6390b59ae2bad2a763e7ab3341ee4c80e708b3d.tar.gz
PROJ-a6390b59ae2bad2a763e7ab3341ee4c80e708b3d.zip
Merge pull request #1826 from rouault/rfc4_code_review
[RFC4_dev] Address code review comments
Diffstat (limited to 'src/grids.hpp')
-rw-r--r--src/grids.hpp31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/grids.hpp b/src/grids.hpp
index aa852ef6..6b6ee0d2 100644
--- a/src/grids.hpp
+++ b/src/grids.hpp
@@ -70,6 +70,7 @@ class Grid {
const std::string &name() const { return m_name; }
virtual bool isNullGrid() const { return false; }
+ virtual bool hasChanged() const = 0;
};
// ---------------------------------------------------------------------------
@@ -116,6 +117,7 @@ class VerticalShiftGridSet {
const VerticalShiftGrid *gridAt(double lon, double lat) const;
virtual void reassign_context(PJ_CONTEXT *ctx);
+ virtual bool reopen(PJ_CONTEXT *ctx);
};
// ---------------------------------------------------------------------------
@@ -162,6 +164,7 @@ class HorizontalShiftGridSet {
const HorizontalShiftGrid *gridAt(double lon, double lat) const;
virtual void reassign_context(PJ_CONTEXT *ctx);
+ virtual bool reopen(PJ_CONTEXT *ctx);
};
// ---------------------------------------------------------------------------
@@ -217,6 +220,7 @@ class GenericShiftGridSet {
const GenericShiftGrid *gridAt(double lon, double lat) const;
virtual void reassign_context(PJ_CONTEXT *ctx);
+ virtual bool reopen(PJ_CONTEXT *ctx);
};
// ---------------------------------------------------------------------------
@@ -225,15 +229,24 @@ typedef std::vector<std::unique_ptr<HorizontalShiftGridSet>> ListOfHGrids;
typedef std::vector<std::unique_ptr<VerticalShiftGridSet>> ListOfVGrids;
typedef std::vector<std::unique_ptr<GenericShiftGridSet>> ListOfGenericGrids;
-ListOfVGrids proj_vgrid_init(PJ *P, const char *grids);
-ListOfHGrids proj_hgrid_init(PJ *P, const char *grids);
-ListOfGenericGrids proj_generic_grid_init(PJ *P, const char *grids);
-
-double proj_vgrid_value(PJ *P, const ListOfVGrids &, PJ_LP lp,
- double vmultiplier);
-PJ_LP proj_hgrid_value(PJ *P, const ListOfHGrids &, PJ_LP lp);
-PJ_LP proj_hgrid_apply(PJ *P, const ListOfHGrids &, PJ_LP lp,
- PJ_DIRECTION direction);
+ListOfVGrids pj_vgrid_init(PJ *P, const char *grids);
+ListOfHGrids pj_hgrid_init(PJ *P, const char *grids);
+ListOfGenericGrids pj_generic_grid_init(PJ *P, const char *grids);
+
+PJ_LP pj_hgrid_value(PJ *P, const ListOfHGrids &grids, PJ_LP lp);
+double pj_vgrid_value(PJ *P, const ListOfVGrids &, PJ_LP lp,
+ double vmultiplier);
+PJ_LP pj_hgrid_apply(PJ_CONTEXT *ctx, const ListOfHGrids &grids, PJ_LP lp,
+ PJ_DIRECTION direction);
+
+const GenericShiftGrid *pj_find_generic_grid(const ListOfGenericGrids &grids,
+ const PJ_LP &input,
+ GenericShiftGridSet *&gridSetOut);
+bool pj_bilinear_interpolation_three_samples(const GenericShiftGrid *grid,
+ const PJ_LP &lp, int idx1,
+ int idx2, int idx3, double &v1,
+ double &v2, double &v3,
+ bool &must_retry);
NS_PROJ_END