zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/////////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). 
// All rights reserved. 
// 
// This software and its documentation and related materials are owned by 
// the Alliance. The software may only be incorporated into application 
// programs owned by members of the Alliance, subject to a signed 
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable  
// trade secrets of the Alliance and its suppliers. The software is also 
// protected by copyright law and international treaty provisions. Application  
// programs incorporating this software must include the following statement 
// with their copyright notices:
//   
//   This application incorporates Teigha(R) software pursuant to a license 
//   agreement with Open Design Alliance.
//   Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. 
//   All rights reserved.
//
// By use of this software, its documentation or related materials, you 
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
 
#ifndef _OD_DB_GEOCOORDINATESYSTEM_PE_
#define _OD_DB_GEOCOORDINATESYSTEM_PE_
 
#include "OdDbGeoCoordinateSystem.h"
 
#include "TD_PackPush.h"
/** \details
  This abstract class represents a protocol extension for a category which holds string 
  identifiers referring to a group of coordinate reference systems.
 
  <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbGeoCoordinateSystemCategoryPE : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemCategoryPE);
  
  /** \details
    Virtual destructor.
  */
  virtual ~OdDbGeoCoordinateSystemCategoryPE() {};
  
  /** \details
    Creates and returns all coordinate system categories.
    
    \param allCategories [in/out] Array of pointers to returned categories.
        
    \returns Returns eOK if successful, or an appropriate error code if not.
  */
  virtual OdResult  createAll(OdArray<OdDbGeoCoordinateSystemCategoryPtr>& allCategories) const = 0;
};
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbGeoCoordinateSystemCategoryPE object pointers.
*/
typedef OdSmartPtr<OdDbGeoCoordinateSystemCategoryPE> OdDbGeoCoordinateSystemCategoryPEPtr;
 
/** \details
  This abstract class represents a protocol extension for a coordinate reference system (CRS) definition.
 
  <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbGeoCoordinateSystemPE : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemPE);
  
  /** \details
    Virtual destructor.
  */
  virtual ~OdDbGeoCoordinateSystemPE() {};
  
  /** \details
    Creates and returns a new OdDbGeoCoordinateSystem object from the current virtual catalog.
    
    \param coordSysIdOrFullDef [in] ID, WKT or XML representation of the CRS definition to load.
    \param pCoordSys [out] New CRS.
    
    \returns Returns eOK if successful, or an appropriate error code if not.
  */
  virtual OdResult create(const OdString& coordSysIdOrFullDef, OdDbGeoCoordinateSystemPtr& pCoordSys) const = 0;
  /** \details
    Creates and returns a new OdDbGeoCoordinateSystem object for every existing, 
    persistent CRS definition from the current virtual catalog.
    
    \param geoPt [in] Geodetic point.
    \param allCoordSys [out] Array of pointers to the new CRS objects.
    
    \returns Returns eOK if successful, or an appropriate error code if not.
  */
  virtual OdResult createAll(const OdGePoint3d& geoPt, OdArray<OdDbGeoCoordinateSystemPtr>& allCoordSys) const = 0;
  
  /** \details
    Creates and returns a new OdDbGeoCoordinateSystem object for every existing, 
    persistent CRS definition from the current virtual catalog.
    
    \param allCoordSys [out] Array of pointers to the new CRS objects.
    \param pCategory [in] Category.
    
    \returns Returns eOK if successful, or an appropriate error code if not.
    
    \remarks
    If pCategory is NULL, all existing and persistent CRS definitions are returned.
  */
  virtual OdResult createAll(OdArray<OdDbGeoCoordinateSystemPtr>& allCoordSys, const OdDbGeoCoordinateSystemCategory* pCategory = NULL) const = 0;
};
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbGeoCoordinateSystemPE object pointers.
*/
typedef OdSmartPtr<OdDbGeoCoordinateSystemPE> OdDbGeoCoordinateSystemPEPtr;
 
/** \details
  This abstract class represents a protocol extension for a transformer object 
  which is used to transform points from the source CRS to the target CRS.
 
  <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbGeoCoordinateSystemTransformerPE : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemTransformerPE);
  
  /** \details
    Virtual destructor.
  */
  virtual ~OdDbGeoCoordinateSystemTransformerPE() {};
  /** \details
    Transforms the point from the source CRS to the target CRS.
    
    \param sourceCoordSysId [in] Source CRS's ID.
    \param targetCoordSysId [in] Target CRS's ID.
    \param pointIn [in] Point in the source CRS.
    \param pointOut [out] Point in the target CRS.
    
    \returns Returns eOK if successful, or an appropriate error code if not.
  */
  virtual OdResult transformPoint(const OdString& sourceCoordSysId,
    const OdString& targetCoordSysId,
    const OdGePoint3d& pointIn,
    OdGePoint3d& pointOut) const = 0;
  /** \details
    Transforms the array of points from the source CRS to the target CRS.
    
    \param sourceCoordSysId [in] Source CRS's ID.
    \param targetCoordSysId [in] Target CRS's ID.
    \param pointsIn [in] Point array in the source CRS.
    \param pointsOut [out] Point array in the target CRS.
    
    \returns Returns eOK if successful, or an appropriate error code if not.
  */
  virtual OdResult transformPoints(const OdString& sourceCoordSysId,
    const OdString& targetCoordSysId,
    const OdGePoint3dArray& pointsIn,
    OdGePoint3dArray& pointsOut) const = 0;
  
  /** \details
    Creates a new OdDbGeoCoordinateSystemTransformer object from the source and target CRSs.
    
    \param sourceCoordSysId [in] Source CRS's ID.
    \param targetCoordSysId [in] Target CRS's ID.
    \param pCoordSysTransformer [out] New OdDbGeoCoordinateSystemTransformer object.
    
    \returns Returns eOK if successful, or an appropriate error code if not.
  */
  virtual OdResult create(const OdString& sourceCoordSysId, 
    const OdString& targetCoordSysId,
    OdDbGeoCoordinateSystemTransformerPtr& pCoordSysTransformer) const = 0;
};
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbGeoCoordinateSystemTransformerPE object pointers.
*/
typedef OdSmartPtr<OdDbGeoCoordinateSystemTransformerPE> OdDbGeoCoordinateSystemTransformerPEPtr;
 
#include "TD_PackPop.h"
 
#endif //_OD_DB_GEOCOORDINATESYSTEM_PE_