// ATLModel.idl : IDL source for ATLModel.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (ATLModel.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "tantype.idl";

  /////////////////////////////////////////////////////////////
  // IATLTangramModelEvent
  // {4A6E83B0-B0F4-11d0-B69F-00A0C903487A}
  [
    object,
    uuid(4A6E83B0-B0F4-11d0-B69F-00A0C903487A),
    helpstring("ITangramModelEvent Interface"),
    pointer_default(unique)
  ]
  interface IATLTangramModelEvent: IUnknown
  {
    HRESULT OnModelChange();
  };

  ///////////////////////////////////////////////////////////
  //
  // Interface IATLTangramModel
  // {060BAAA2-B076-11D0-B69F-00A0C903487A}
  [
    object,
    uuid(060BAAA2-B076-11D0-B69F-00A0C903487A),
    helpstring("IATLTangramModel Interface"),
    pointer_default(unique)
  ]
  interface IATLTangramModel : IUnknown
  {
    HRESULT GetNumberOfVertices([out] long* pcVertices);
    HRESULT GetVertices([in] long cVertices, 
      [out, size_is(cVertices)] TangramPoint2d* points); 
    HRESULT SetVertices([in] long cVertices, 
      [in, size_is(cVertices)] TangramPoint2d* points);
  };
  ///////////////////////////////////////////////////////////
  //
  // Interface IATLTangramTransform
  // {D5056310-B0F4-11d0-B69F-00A0C903487A}
  [
    object,
    uuid(D5056310-B0F4-11d0-B69F-00A0C903487A),
    helpstring("IATLTangramTransform Interface"),
    pointer_default(unique)
  ]
  interface IATLTangramTransform : IUnknown
  {
    HRESULT Translate([in]double x, [in]double y);
    HRESULT GetTranslation([out] TangramPoint2d* point);
    HRESULT Rotate([in] double fDegrees);
    HRESULT GetRotation([out] double* pRotation);
  };


[
  uuid(060BAA95-B076-11D0-B69F-00A0C903487A),
  version(1.0),
  helpstring("ATLModel 1.0 Type Library")
]
library ATLMODELLib
{
  importlib("stdole32.tlb");
  importlib("stdole2.tlb");

  [
    uuid(060BAAA3-B076-11D0-B69F-00A0C903487A),
    helpstring("ATLTangramModel Class")
  ]
  coclass ATLTangramModel
  {
    [default] interface IATLTangramModel;
    interface IATLTangramTransform;
    interface IConnectionPointContainer;

    // Outgoing source interface.
    [source] interface IATLTangramModelEvent;  
  };
};