#ifndef __WELDSTD_H
#define __WELDSTD_H
/////////////////////////////////////////////////////////////////////
// (C) Copyright 1993-1998 by Autodesk, Inc. 
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted, 
// provided that the above copyright notice appears in all copies and 
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting 
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. 
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. 
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to 
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//
//
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// standard support for of welding symboogy
/////////////////////////////////////////////////////////////////////
class TestWeldingStd : public AcmWeldingStdISO
{
public:
  ACDB_DECLARE_MEMBERS(TestWeldingStd);

  TestWeldingStd();
  virtual ~TestWeldingStd();

  virtual Acm::ErrorStatus getRevision(CString& rev, Adesk::UInt16& year) const;
  virtual Adesk::Boolean   isCompatibleTo(const AcmStandard* pStd) const;

  virtual Acm::ErrorStatus cInit();
  virtual Adesk::Boolean setFactoryDefaults();

  virtual void getSubEnts(const AcmCSubWelding* pSubSym,
                          AcmCAuxEntArray& subents,
                          AcGePoint3d& ptRefEnd) const;

};                      

MAKE_ACDBOPENOBJECT_FUNCTION(TestWeldingStd);

/////////////////////////////////////////////////////////////////////
//Empty Field weld symbol
/////////////////////////////////////////////////////////////////////
class TestFieldWeldEmpty : public AcmCWeldService
{
public:
  TestFieldWeldEmpty();
  virtual void getSubEnts(AcmCWeld* pWeld, AcmCAuxEntArray& entArray);

protected:
  virtual double symbolWidth() const;
  virtual HINSTANCE serviceResourceHandle() const;
  virtual void getBasicSymbol(AcmCWeld* pWeld,
                              double txtH,
                              double gap, 
                              Adesk::UInt16 symColor,
                              AcmCAuxEntArray& entArray);
};                      

/////////////////////////////////////////////////////////////////////
//SINGLE J GROOVE
/////////////////////////////////////////////////////////////////////
class TestJGrooveWeld : public AcmCWeldBaseService
{
public:
  TestJGrooveWeld();
  virtual void getSubEnts(AcmCWeld* pWeld, AcmCAuxEntArray& entArray);

protected:
  virtual double symbolHeight(const AcmCWeld *pWeld) const;
  virtual double symbolWidth() const;
  virtual void getBasicSymbol(AcmCWeld* pWeld,
                              double txtH,
                              double gap, 
                              Adesk::UInt16 symColor,
                              AcmCAuxEntArray& entArray);
  virtual HINSTANCE serviceResourceHandle() const;
};                      

/////////////////////////////////////////////////////////////////////
// All around symbol
/////////////////////////////////////////////////////////////////////
class TestAllAroundSquare : public AcmCWeldService
{
public:
  TestAllAroundSquare();
  virtual void getSubEnts(AcmCWeld* pWeld, AcmCAuxEntArray& entArray);
  virtual HBITMAP loadBitmap(Adesk::Boolean mask = Adesk::kFalse) const;

protected:
  virtual HINSTANCE serviceResourceHandle() const;
  virtual void getBasicSymbol(AcmCWeld* pWeld,
                              double txtH,
                              double gap, 
                              Adesk::UInt16 symColor,
                              AcmCAuxEntArray& entArray);
};                      


#endif // STD