//////////////////////////////////////////////////////////////////////////////
//
//  Copyright 2025 by Autodesk, Inc.  All rights reserved.
//
// This computer source code and related instructions and comments 
// are the unpublished confidential and proprietary information of 
// Autodesk, Inc. and are protected under applicable copyright and 
// trade secret law.  They may not be disclosed to, copied or used 
// by any third party without the prior written consent of Autodesk, Inc.
//
//////////////////////////////////////////////////////////////////////////////
#ifndef __STDDINEDGE_H
#define __STDDINEDGE_H

///<summary>This is class AmdtEdgeStdDIN.</summary>
class STDIMP_DLLSHARE AmdtEdgeStdDIN : public AmdtEdgeStdISO
{
public:
  ACRX_DECLARE_MEMBERS(AmdtEdgeStdDIN);
  AmdtEdgeStdDIN();
  virtual ~AmdtEdgeStdDIN();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether 
  ///AcmSymbolSTD can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;
  void initToEdit() const override;
  void initToEditOriginal() const override;
  ///<summary>Sets the factory default values.</summary>
  virtual Adesk::Boolean setFactoryDefaults();
  virtual Acm::ErrorStatus checkVisibility(AmdtCEdge* pData) const;
  virtual Acm::ErrorStatus initFields(AmdtCEdge* pData) const;
  virtual Acm::ErrorStatus validityFields(AmdtCEdge *pData,
    bool setBoundary = false,
    int dlgIndex = -1);
  virtual void getSubEnts(const AmdtCEdge* pSubSym,
    AcmCAuxEntArray& subents,
    bool corrSymbOnRightSide = false) const;
  ///<summary>It returns true if the edge symbol is drawn above the arrow landing.</summary>
  virtual bool isSymAboveLanding() const;

};                      

///<summary>This is class AmdtEdgeStdDIN13715.</summary>
class STDIMP_DLLSHARE AmdtEdgeStdDIN13715 : public AmdtEdgeStdISO13715
{
public:
  ACRX_DECLARE_MEMBERS(AmdtEdgeStdDIN13715);
  AmdtEdgeStdDIN13715();
  virtual ~AmdtEdgeStdDIN13715();
  ///<summary>Gets the information about the standard name and revision.</summary>
  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;  
  ///<summary>Provides the basic interface for the AcmStandardManager and hence determines whether 
  ///AcmSymbolSTD can be used for a particular standard.</summary>
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const; 
  ///<summary>Sets the factory default values.</summary>
  virtual Adesk::Boolean setFactoryDefaults(); 
  ///<summary>Get the symbol's standard number string.</summary>
  ///<param name="rev">standard number.</param>
  virtual void getStandardNum(CString& rev) const;
};                      

#endif // __STDDINEDGE_H