void RenderObservationZone::parms_sector(const SectorZone& oz) { parms_oz(oz); p_start = m_proj.LonLat2Screen(oz.get_SectorStart()); p_end = m_proj.LonLat2Screen(oz.get_SectorEnd()); }
static void Visit(WritableDataNode &node, const SectorZone &data) { node.SetAttribute(_T("type"), _T("Sector")); node.SetAttribute(_T("radius"), data.GetRadius()); node.SetAttribute(_T("start_radial"), data.GetStartRadial()); node.SetAttribute(_T("end_radial"), data.GetEndRadial()); }
void Serialiser::Visit(const SectorZone& data) { m_node.set_attribute(_T("type"), _T("Sector")); m_node.set_attribute(_T("radius"), data.getRadius()); m_node.set_attribute(_T("start_radial"), data.getStartRadial()); m_node.set_attribute(_T("end_radial"), data.getEndRadial()); }
void RenderObservationZone::Visit(const SectorZone& oz) { parms_sector(oz); if (draw_style(!m_past)) { draw_segment(oz.getStartRadial(), oz.getEndRadial()); draw_two_lines(); } m_buffer.mix_copy(); }
ObservationZonePoint* Serialiser::deserialise_oz(const Waypoint& wp, const bool is_turnpoint) { tstring type; if (!m_node.get_attribute(_T("type"),type)) { assert(1); return NULL; } if (_tcscmp(type.c_str(), _T("Line")) == 0) { LineSectorZone *ls = new LineSectorZone(wp.Location); fixed length; if (m_node.get_attribute(_T("length"), length)) { ls->setLength(length); } return ls; } else if (_tcscmp(type.c_str(), _T("Cylinder")) == 0) { CylinderZone *ls = new CylinderZone(wp.Location); fixed radius; if (m_node.get_attribute(_T("radius"), radius)) { ls->setRadius(radius); } return ls; } else if (_tcscmp(type.c_str(), _T("Sector")) == 0) { SectorZone *ls = new SectorZone(wp.Location); fixed radius; Angle start, end; if (m_node.get_attribute(_T("radius"), radius)) { ls->setRadius(radius); } if (m_node.get_attribute(_T("start_radial"), start)) { ls->setStartRadial(start); } if (m_node.get_attribute(_T("end_radial"), end)) { ls->setEndRadial(end); } return ls; } else if (_tcscmp(type.c_str(), _T("FAISector")) == 0) { return new FAISectorZone(wp.Location, is_turnpoint); } else if (_tcscmp(type.c_str(), _T("Keyhole")) == 0) { return new KeyholeZone(wp.Location); } else if (_tcscmp(type.c_str(), _T("BGAFixedCourse")) == 0) { return new BGAFixedCourseZone(wp.Location); } else if (_tcscmp(type.c_str(), _T("BGAEnhancedOption")) == 0) { return new BGAEnhancedOptionZone(wp.Location); } assert(1); return NULL; }
void Visit(const SectorZone& oz) { hide_all(); WndFrame* wp = ((WndFrame *)wf->FindByName(_T("frmOZSector"))); if (wp) wp->show(); LoadFormProperty(*wf, _T("prpOZSectorRadius"), ugDistance, oz.getRadius()); LoadFormProperty(*wf, _T("prpOZSectorStartRadial"), oz.getStartRadial().value_degrees()); LoadFormProperty(*wf, _T("prpOZSectorFinishRadial"), oz.getEndRadial().value_degrees()); WndProperty* wap = (WndProperty*)wf->FindByName(_T("prpOZSectorInnerRadius")); if (wap) { wap->hide(); } }
void Visit(SectorZone& oz) { fixed radius = Units::ToSysDistance(GetFormValueFixed(*wf, _T("prpOZSectorRadius"))); if (fabs(radius - oz.getRadius()) > fixed(49)) { oz.setRadius(radius); task_modified = true; } fixed start_radial = GetFormValueFixed(*wf, _T("prpOZSectorStartRadial")); if (start_radial != oz.getStartRadial().value_degrees()) { oz.setStartRadial(Angle::degrees(start_radial)); task_modified = true; } fixed finish_radial = GetFormValueFixed(*wf, _T("prpOZSectorFinishRadial")); if (finish_radial != oz.getEndRadial().value_degrees()) { oz.setEndRadial(Angle::degrees(finish_radial)); task_modified = true; } }
ObservationZonePoint* Deserialiser::DeserialiseOZ(const Waypoint &wp, bool is_turnpoint) { const TCHAR *type = node.GetAttribute(_T("type")); if (type == nullptr) return nullptr; if (StringIsEqual(type, _T("Line"))) { LineSectorZone *ls = new LineSectorZone(wp.location); fixed length; if (node.GetAttribute(_T("length"), length) && positive(length)) ls->SetLength(length); return ls; } else if (StringIsEqual(type, _T("Cylinder"))) { CylinderZone *ls = new CylinderZone(wp.location); fixed radius; if (node.GetAttribute(_T("radius"), radius) && positive(radius)) ls->SetRadius(radius); return ls; } else if (StringIsEqual(type, _T("MatCylinder"))) { return CylinderZone::CreateMatCylinderZone(wp.location); } else if (StringIsEqual(type, _T("Sector"))) { fixed radius, inner_radius; Angle start, end; SectorZone *ls; if (node.GetAttribute(_T("inner_radius"), inner_radius)) { AnnularSectorZone *als = new AnnularSectorZone(wp.location); als->SetInnerRadius(inner_radius); ls = als; } else ls = new SectorZone(wp.location); if (node.GetAttribute(_T("radius"), radius) && positive(radius)) ls->SetRadius(radius); if (node.GetAttribute(_T("start_radial"), start)) ls->SetStartRadial(start); if (node.GetAttribute(_T("end_radial"), end)) ls->SetEndRadial(end); return ls; } else if (StringIsEqual(type, _T("FAISector"))) return SymmetricSectorZone::CreateFAISectorZone(wp.location, is_turnpoint); else if (StringIsEqual(type, _T("SymmetricQuadrant"))) { fixed radius = fixed(10000); node.GetAttribute(_T("radius"), radius); return new SymmetricSectorZone(wp.location, radius); } else if (StringIsEqual(type, _T("Keyhole"))) return KeyholeZone::CreateDAeCKeyholeZone(wp.location); else if (StringIsEqual(type, _T("CustomKeyhole"))) { fixed radius = fixed(10000), inner_radius = fixed(500); Angle angle = Angle::QuarterCircle(); node.GetAttribute(_T("radius"), radius); node.GetAttribute(_T("inner_radius"), inner_radius); node.GetAttribute(_T("angle"), angle); KeyholeZone *keyhole = KeyholeZone::CreateCustomKeyholeZone(wp.location, radius, angle); keyhole->SetInnerRadius(inner_radius); return keyhole; } else if (StringIsEqual(type, _T("BGAStartSector"))) return KeyholeZone::CreateBGAStartSectorZone(wp.location); else if (StringIsEqual(type, _T("BGAFixedCourse"))) return KeyholeZone::CreateBGAFixedCourseZone(wp.location); else if (StringIsEqual(type, _T("BGAEnhancedOption"))) return KeyholeZone::CreateBGAEnhancedOptionZone(wp.location); assert(1); return nullptr; }
void Visit(const SectorZone& oz) { ozUserSize = oz.getRadius(); }