NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
radar_conversion_interface.h
Go to the documentation of this file.
1 #ifndef SDK_ECDIS_RADAR_CONVERSION_INTERFACE_H_
11 #define SDK_ECDIS_RADAR_CONVERSION_INTERFACE_H_
12 #pragma once
13 
14 #include <base/inc/platform.h>
15 #include <base/inc/base_types.h>
16 #include <base/inc/forward_declarations.h>
20 #include <base/inc/float_util.h>
24 
25 SDK_ECDISLAYER_BEGIN_NAMESPACE
26 namespace radar {
27 
28 FWD_DECL_INTERFACE(IRadarConversion);
29 
30 // Properties of RadarConversion component
31 enum RadarConversionPropertyIDs {
32  kRadarConversion_BlurFilter = 1,
33  kRadarConversion_AsterixCAT240 = 2,
34  kRadarConversion_AntennaInProjectionX = 3,
35  kRadarConversion_AntennaInProjectionY = 4,
36  kRadarConversion_FrameInProjectionMinX = 5,
37  kRadarConversion_FrameInProjectionMinY = 6,
38  kRadarConversion_FrameInProjectionMaxX = 7,
39  kRadarConversion_FrameInProjectionMaxY = 8,
40  kRadarConversion_ProjectionToBitmapScaleX = 9,
41  kRadarConversion_ProjectionToBitmapScaleY = 10,
42  kRadarConversion_BitmapWidth = 11,
43  kRadarConversion_BitmapHeight = 12,
44  kRadarConversion_AntennaInBitmapX = 13,
45  kRadarConversion_AntennaInBitmapY = 14,
46  kRadarConversion_ConversionMode = 15,
47 };
48 
49 enum RadarBlurFilter {
50  kRadarBlurFilter_NoFilter = 0,
51  kRadarBlurFilter_Gaussian_3x3 = 1,
52  kRadarBlurFilter_Gaussian_5x5 = 2,
53  kRadarBlurFilter_ArithmeticMean_3x3 = 3,
54  kRadarBlurFilter_ArithmeticMean_5x5 = 4,
55 };
56 
57 enum RadarConversionMode {
58  kRadarConversionMode_Direct = 1, // Just map the radar pixels to raster using the projection and the matrix
59  kRadarConversionMode_Inscribe = 2, // Inscribe the radar image into the raster box. The matrix is calculated.
60 };
61 
65  SDKUInt8* m_data;
66  SDKUInt32 m_data_size;
67  SDKUInt16 m_bits_per_pixel;
68  SDKUInt16 m_alignment;
69  SDKUInt32 m_sweep_header_size;
70  SDKUInt32 m_sweep_size;
71  SDKUInt32 m_pixel_count;
72  SDKUInt32 m_sweep_count;
73 };
74 typedef struct RADAR_SCAN_DATA RADAR_SCAN_DATA;
75 
79  SDKUInt8* m_data;
80  SDKUInt32 m_data_size;
81  SDKUInt16 m_bits_per_pixel;
82  SDKUInt16 m_alignment;
83  SDKUInt32 m_line_size;
84  SDKUInt32 m_width;
85  SDKUInt32 m_height;
86 };
87 typedef struct IMAGE_PARAMETERS IMAGE_PARAMETERS;
88 
91 class IRadarConversion : public ISDKProperties {
92 public:
93 
96  virtual SDKResult SDK_CALLTYPE SetRadarScanData(
97  const RADAR_SCAN_DATA& radar_scan_data) throw() = 0;
98 
102  virtual SDKResult SDK_CALLTYPE SetRadarPosition(
103  double lat, double lon) throw() = 0;
104 
111  virtual SDKResult SDK_CALLTYPE SetRadarParameters(
112  double range,
113  double dead_range = 0,
114  double antenna_azimuth = 0,
115  double range1 = 0,
116  double antenna_azimuth2 = IEEE754_2008::dbl_NaN()) throw() = 0;
117 
128  const RADAR_SCAN_DATA& radar_scan_data,
129  double lat, double lon,
130  double range,
131  double dead_range = 0,
132  double antenna_azimuth = 0,
133  double range1 = 0,
134  double antenna_azimuth2 = IEEE754_2008::dbl_NaN()) throw()
135  {
136  SDKResult res = SetRadarScanData(radar_scan_data);
137  if (!SDK_SUCCEEDED(res))
138  return res;
139  res = SetRadarPosition(lat, lon);
140  if (!SDK_SUCCEEDED(res))
141  return res;
142  res = SetRadarParameters(range, dead_range, antenna_azimuth,
143  range1, antenna_azimuth2);
144  return res;
145  }
146 
153  SDKUInt32 width, SDKUInt32 height,
154  ::sdk::crs::IProjection* projection = NULL,
155  const SDKMatrix3X2& transformation_matrix = CMatrix3X2()) throw() {
156  IMAGE_PARAMETERS image_params;
157  image_params.m_data = NULL; // [in] A pointer to memory where the bitmap will be copied
158  image_params.m_data_size = 0; // [in, out] The data size
159  image_params.m_bits_per_pixel = 0; // [in, out] Pixel intensity depth, have to be one of 2, 4, 8, 16, 32 or 0 - same as source
160  image_params.m_alignment = 0; // [in, out] Required byte alignment for raster line, have to be from 1 up to 256 or 0 - same as source
161  image_params.m_line_size = 0; // [out] Raster line size in bytes
162  image_params.m_width = width; // [out] Bitmap width
163  image_params.m_height = height; // [out] Bitmap height
164  return GenerateRadarImage(
165  image_params, projection, transformation_matrix);
166  }
167 
168  virtual SDKResult SDK_CALLTYPE GenerateRadarImage(
169  IMAGE_PARAMETERS& image_params,
170  ::sdk::crs::IProjection* projection = NULL,
171  const SDKMatrix3X2& transformation_matrix = CMatrix3X2()) throw() = 0;
172 
191  virtual SDKResult SDK_CALLTYPE GetRadarImage(
192  IMAGE_PARAMETERS& image_params,
193  SDKInt32* radar_pos_x, SDKInt32* radar_pos_y,
194  SDKGeoPointRect *frame,
195  SDKInt32 image_offset_x = 0, SDKInt32 image_offset_y = 0) throw() = 0;
196 
197  SDK_IMPLEMENT_IID(IRadarConversion)
198  SDK_END_INTERFACE(IRadarConversion)
199 };
200 SDK_DECLARE_IID(IRadarConversion)
201 
202 } // namespace radar
203 SDK_ECDISLAYER_END_NAMESPACE
204 
205 #endif // SDK_ECDIS_RADAR_CONVERSION_INTERFACE_H_
radar::IRadarConversion::GenerateRadarImage
SDKResult GenerateRadarImage(SDKUInt32 width, SDKUInt32 height, ::sdk::crs::IProjection *projection=NULL, const SDKMatrix3X2 &transformation_matrix=CMatrix3X2())
Generates the raster image corresponded to the RADAR_SCAN_DATA.
Definition: radar_conversion_interface.h:152
crs_coordinate_transformation.h
Describes the interface that manages coordinate transformation.
radar::IMAGE_PARAMETERS::m_data
SDKUInt8 * m_data
[in] A pointer to memory where the bitmap will be copied
Definition: radar_conversion_interface.h:79
SDKGeoPointRect
Geo rectangle in degree units.
Definition: geometry_base_types.h:1801
radar::RADAR_SCAN_DATA
RADAR_SCAN_DATA - structure contains necessary parameters for processing radar data
Definition: radar_conversion_interface.h:64
base_types.h
SDK base types.
radar::IRadarConversion::SetRadarParameters
virtual SDKResult SDK_CALLTYPE SetRadarParameters(double range, double dead_range=0, double antenna_azimuth=0, double range1=0, double antenna_azimuth2=IEEE754_2008::dbl_NaN())=0
Set the radar parameters.
radar::IRadarConversion::SetRadarScanData
virtual SDKResult SDK_CALLTYPE SetRadarScanData(const RADAR_SCAN_DATA &radar_scan_data)=0
Set the radar scan data.
radar::IRadarConversion::SetRadarPosition
virtual SDKResult SDK_CALLTYPE SetRadarPosition(double lat, double lon)=0
Set the radar position.
radar::IMAGE_PARAMETERS::m_line_size
SDKUInt32 m_line_size
[out] Raster line size in bytes
Definition: radar_conversion_interface.h:83
radar::RADAR_SCAN_DATA::m_sweep_header_size
SDKUInt32 m_sweep_header_size
Sweep header size in bytes.
Definition: radar_conversion_interface.h:69
radar::IRadarConversion
Radar conversion component for bitmap generation from radar data.
Definition: radar_conversion_interface.h:91
radar::RADAR_SCAN_DATA::m_pixel_count
SDKUInt32 m_pixel_count
Number of radar pixels in sweep (ray)
Definition: radar_conversion_interface.h:71
SDK_SUCCEEDED
#define SDK_SUCCEEDED(res)
Checks no error result.
Definition: sdk_results_enum.h:67
properties_interface.h
Object generic properties interface.
radar::RADAR_SCAN_DATA::m_alignment
SDKUInt16 m_alignment
Byte alignment for sweep line, have to be from 1 up to 256.
Definition: radar_conversion_interface.h:68
crs_projection.h
Describes the interface that manages projection parameters.
ecdislayer_const.h
The ecdislayer constants.
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
radar::IMAGE_PARAMETERS::m_data_size
SDKUInt32 m_data_size
[in, out] The data size
Definition: radar_conversion_interface.h:80
radar::RADAR_SCAN_DATA::m_sweep_size
SDKUInt32 m_sweep_size
Sweep size in bytes.
Definition: radar_conversion_interface.h:70
radar::RADAR_SCAN_DATA::m_data_size
SDKUInt32 m_data_size
Scan data size.
Definition: radar_conversion_interface.h:66
radar::IMAGE_PARAMETERS::m_alignment
SDKUInt16 m_alignment
[in, out] Required byte alignment for raster line, have to be from 1 up to 256 or 0 - same as source
Definition: radar_conversion_interface.h:82
sdk_component_interface.h
Common base SDK interfaces.
platform.h
Describes the platform constants.
radar::RADAR_SCAN_DATA::m_sweep_count
SDKUInt32 m_sweep_count
Number of sweeps (rays)
Definition: radar_conversion_interface.h:72
radar::IMAGE_PARAMETERS::m_width
SDKUInt32 m_width
[out] Bitmap width
Definition: radar_conversion_interface.h:84
radar::IMAGE_PARAMETERS::m_height
SDKUInt32 m_height
[out] Bitmap height
Definition: radar_conversion_interface.h:85
radar::IMAGE_PARAMETERS
IMAGE_PARAMETERS - structure contains necessary parameters for getting bitmap radar image
Definition: radar_conversion_interface.h:78
matrix3x2.h
Matrix 3X2 implementation.
radar::IRadarConversion::SetRadarScanDataAndPosition
SDKResult SetRadarScanDataAndPosition(const RADAR_SCAN_DATA &radar_scan_data, double lat, double lon, double range, double dead_range=0, double antenna_azimuth=0, double range1=0, double antenna_azimuth2=IEEE754_2008::dbl_NaN())
Set all the radar parameters.
Definition: radar_conversion_interface.h:127
radar::RADAR_SCAN_DATA::m_data
SDKUInt8 * m_data
Scan data.
Definition: radar_conversion_interface.h:65
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
radar::RADAR_SCAN_DATA::m_bits_per_pixel
SDKUInt16 m_bits_per_pixel
Pixel intensity depth, have to be one of 2, 4, 8, 16 or 32.
Definition: radar_conversion_interface.h:67
radar::IMAGE_PARAMETERS::m_bits_per_pixel
SDKUInt16 m_bits_per_pixel
[in, out] Pixel intensity depth, have to be one of 2, 4, 8, 16, 32 or 0 - same as source
Definition: radar_conversion_interface.h:81
radar::IRadarConversion::GetRadarImage
virtual SDKResult SDK_CALLTYPE GetRadarImage(IMAGE_PARAMETERS &image_params, SDKInt32 *radar_pos_x, SDKInt32 *radar_pos_y, SDKGeoPointRect *frame, SDKInt32 image_offset_x=0, SDKInt32 image_offset_y=0)=0
Returns the raster generated by GenerateRadarImage.
sdk::crs::IProjection
Provides access to members that control the properties and methods for the projection.
Definition: crs_projection.h:31