esriGeometry.tlh
上传用户:juying163
上传日期:2014-09-24
资源大小:5867k
文件大小:523k
源码类别:

GIS编程

开发平台:

Visual C++

  1.     esriSRGeoTransformation_NAD_1983_To_NAD_1983_CSRS98_1 = 1843,
  2.     esriSRGeoTransformation_NAD_1983_To_NAD_1983_CSRS98_2 = 1848,
  3.     esriSRGeoTransformation_NAD_1983_To_NAD_1983_CSRS98_3 = 1849,
  4.     esriSRGeoTransformation_AGD_1984_To_GDA_1994_3 = 1559
  5. };
  6. struct __declspec(uuid("1b077916-38c5-11d0-92d2-00805f7c28b0"))
  7. ICurve : IGeometry
  8. {
  9.     //
  10.     // Raw methods provided by interface
  11.     //
  12.     virtual HRESULT __stdcall get_Length (
  13.         double * Length ) = 0;
  14.     virtual HRESULT __stdcall get_FromPoint (
  15.         struct IPoint * * from ) = 0;
  16.     virtual HRESULT __stdcall put_FromPoint (
  17.         struct IPoint * from ) = 0;
  18.     virtual HRESULT __stdcall QueryFromPoint (
  19.         struct IPoint * from ) = 0;
  20.     virtual HRESULT __stdcall get_ToPoint (
  21.         struct IPoint * * to ) = 0;
  22.     virtual HRESULT __stdcall put_ToPoint (
  23.         struct IPoint * to ) = 0;
  24.     virtual HRESULT __stdcall QueryToPoint (
  25.         struct IPoint * to ) = 0;
  26.     virtual HRESULT __stdcall QueryPoint (
  27.         enum esriSegmentExtension extension,
  28.         double DistanceAlongCurve,
  29.         VARIANT_BOOL asRatio,
  30.         struct IPoint * outPoint ) = 0;
  31.     virtual HRESULT __stdcall QueryPointAndDistance (
  32.         enum esriSegmentExtension extension,
  33.         struct IPoint * inPoint,
  34.         VARIANT_BOOL asRatio,
  35.         struct IPoint * outPoint,
  36.         double * DistanceAlongCurve,
  37.         double * distanceFromCurve,
  38.         VARIANT_BOOL * bRightSide ) = 0;
  39.     virtual HRESULT __stdcall QueryTangent (
  40.         enum esriSegmentExtension extension,
  41.         double DistanceAlongCurve,
  42.         VARIANT_BOOL asRatio,
  43.         double Length,
  44.         struct ILine * tangent ) = 0;
  45.     virtual HRESULT __stdcall QueryNormal (
  46.         enum esriSegmentExtension extension,
  47.         double DistanceAlongCurve,
  48.         VARIANT_BOOL asRatio,
  49.         double Length,
  50.         struct ILine * normal ) = 0;
  51.     virtual HRESULT __stdcall GetSubcurve (
  52.         double fromDistance,
  53.         double toDistance,
  54.         VARIANT_BOOL asRatio,
  55.         struct ICurve * * outSubcurve ) = 0;
  56.     virtual HRESULT __stdcall ReverseOrientation ( ) = 0;
  57.     virtual HRESULT __stdcall get_IsClosed (
  58.         VARIANT_BOOL * IsClosed ) = 0;
  59. };
  60. enum esriSegmentExtension
  61. {
  62.     esriNoExtension = 0,
  63.     esriExtendTangentAtFrom = 1,
  64.     esriExtendEmbeddedAtFrom = 2,
  65.     esriExtendTangentAtTo = 4,
  66.     esriExtendEmbeddedAtTo = 8,
  67.     esriExtendTangents = 5,
  68.     esriExtendEmbedded = 10,
  69.     esriExtendAtFrom = 3,
  70.     esriExtendAtTo = 12
  71. };
  72. struct __declspec(uuid("fea4c71c-c5ae-11d0-8307-0000f8034032"))
  73. ILine : ICurve
  74. {
  75.     //
  76.     // Raw methods provided by interface
  77.     //
  78.     virtual HRESULT __stdcall PutCoords (
  79.         struct IPoint * from,
  80.         struct IPoint * to ) = 0;
  81.     virtual HRESULT __stdcall QueryCoords (
  82.         struct IPoint * from,
  83.         struct IPoint * to ) = 0;
  84.     virtual HRESULT __stdcall get_Angle (
  85.         double * outAngle ) = 0;
  86. };
  87. struct __declspec(uuid("f2c4f0de-c5ae-11d0-8307-0000f8034032"))
  88. ISegment : ICurve
  89. {
  90.     //
  91.     // Raw methods provided by interface
  92.     //
  93.     virtual HRESULT __stdcall QueryAttributes (
  94.         VARIANT_BOOL getAttributes,
  95.         VARIANT_BOOL getAwareness,
  96.         esriPointAttributes * from,
  97.         esriPointAttributes * to ) = 0;
  98.     virtual HRESULT __stdcall PutAttributes (
  99.         VARIANT_BOOL PutAttributes,
  100.         VARIANT_BOOL putAwareness,
  101.         esriPointAttributes * from,
  102.         esriPointAttributes * to ) = 0;
  103.     virtual HRESULT __stdcall get_VertexAttributeAware (
  104.         enum esriGeometryAttributes attributeType,
  105.         VARIANT_BOOL * attributeAware ) = 0;
  106.     virtual HRESULT __stdcall put_VertexAttributeAware (
  107.         enum esriGeometryAttributes attributeType,
  108.         VARIANT_BOOL attributeAware ) = 0;
  109.     virtual HRESULT __stdcall HasVertexAttributes (
  110.         enum esriGeometryAttributes attributeType,
  111.         VARIANT_BOOL * hasFromAttribute,
  112.         VARIANT_BOOL * hasToAttribute ) = 0;
  113.     virtual HRESULT __stdcall VertexAttributeOn (
  114.         enum esriGeometryAttributes attributeType,
  115.         double attributeValue,
  116.         long * countInteractions ) = 0;
  117.     virtual HRESULT __stdcall QueryVertexAttributes (
  118.         enum esriGeometryAttributes attributeType,
  119.         double * fromAttribute,
  120.         double * toAttribute ) = 0;
  121.     virtual HRESULT __stdcall PutVertexAttributes (
  122.         enum esriGeometryAttributes attributeType,
  123.         double fromAttribute,
  124.         double toAttribute ) = 0;
  125.     virtual HRESULT __stdcall GetVertexAttributeAtDistance (
  126.         enum esriGeometryAttributes attributeType,
  127.         double distance,
  128.         VARIANT_BOOL asRatio,
  129.         double * attributeValue ) = 0;
  130.     virtual HRESULT __stdcall GetDistanceAtVertexAttribute (
  131.         enum esriGeometryAttributes attributeType,
  132.         double attributeValue,
  133.         VARIANT_BOOL asRatio,
  134.         double * distance ) = 0;
  135.     virtual HRESULT __stdcall SplitAtVertexAttribute (
  136.         enum esriGeometryAttributes attributeType,
  137.         double attributeValue,
  138.         struct ISegment * * fromSegment,
  139.         struct ISegment * * toSegment ) = 0;
  140.     virtual HRESULT __stdcall GetPointsAtVertexAttribute (
  141.         enum esriGeometryAttributes attributeType,
  142.         double attributeValue,
  143.         double lateralOffset,
  144.         struct IPointCollection * * outPoints ) = 0;
  145.     virtual HRESULT __stdcall GetSubSegmentBetweenVertexAttributes (
  146.         enum esriGeometryAttributes attributeType,
  147.         double fromAttribute,
  148.         double toAttribute,
  149.         struct ISegment * * outSegment ) = 0;
  150.     virtual HRESULT __stdcall InterpolateVertexAttributes (
  151.         double distanceAlongSegment,
  152.         VARIANT_BOOL asRatio,
  153.         struct IPoint * atPoint ) = 0;
  154.     virtual HRESULT __stdcall SynchronizeEmptyAttributes (
  155.         struct ISegment * toSegment ) = 0;
  156.     virtual HRESULT __stdcall QueryCurvature (
  157.         double DistanceAlongCurve,
  158.         VARIANT_BOOL asRatio,
  159.         double * curvature,
  160.         struct ILine * unitVector ) = 0;
  161.     virtual HRESULT __stdcall ReturnTurnDirection (
  162.         struct ISegment * otherSegment,
  163.         long * turnDirection ) = 0;
  164.     virtual HRESULT __stdcall EnvelopeIntersection (
  165.         struct IEnvelope * intersectionEnvelope,
  166.         VARIANT_BOOL boundaryOverlap,
  167.         double * segmentParams,
  168.         double * envelopeDistances,
  169.         long * numIntersections,
  170.         long * outcode ) = 0;
  171.     virtual HRESULT __stdcall QueryAreaCorrection (
  172.         double * areaCorrection ) = 0;
  173.     virtual HRESULT __stdcall QueryCentroidCorrection (
  174.         double * weightedCentroidX,
  175.         double * weightedCentroidY,
  176.         double * areaCorrection ) = 0;
  177.     virtual HRESULT __stdcall QueryWKSEnvelope (
  178.         WKSEnvelope * Envelope ) = 0;
  179.     virtual HRESULT __stdcall HorizontalIntersectionCount (
  180.         WKSPoint * p,
  181.         VARIANT_BOOL * pointOnLine,
  182.         long * numIntersections ) = 0;
  183.     virtual HRESULT __stdcall SplitAtDistance (
  184.         double distances,
  185.         VARIANT_BOOL asRatio,
  186.         struct ISegment * * fromSegment,
  187.         struct ISegment * * toSegment ) = 0;
  188.     virtual HRESULT __stdcall SplitDivideLength (
  189.         double Offset,
  190.         double Length,
  191.         VARIANT_BOOL asRatio,
  192.         long * numSplitSegments,
  193.         struct ISegment * * splitSegments ) = 0;
  194.     virtual HRESULT __stdcall Densify (
  195.         long cInSlots,
  196.         double maxDeviation,
  197.         long * pcOutSegments,
  198.         struct ILine * * segments ) = 0;
  199.     virtual HRESULT __stdcall MaxDistanceFromLine (
  200.         WKSPoint * baseFrom,
  201.         WKSPoint * baseTo,
  202.         double minOffset,
  203.         double fromArcDistance,
  204.         double toArcDistance,
  205.         double * maxOffset,
  206.         double * atArcDistance,
  207.         WKSPoint * farPoint ) = 0;
  208.     virtual HRESULT __stdcall ConvertDistanceMeasureToRatio (
  209.         double distanceMeasure,
  210.         double * distanceRatio ) = 0;
  211.     virtual HRESULT __stdcall QueryWKSFromPoint (
  212.         WKSPoint * p ) = 0;
  213.     virtual HRESULT __stdcall QueryWKSToPoint (
  214.         WKSPoint * p ) = 0;
  215.     virtual HRESULT __stdcall GeographicShift (
  216.         double splitLongitude ) = 0;
  217. };
  218. struct __declspec(uuid("de08a214-4fc2-11d1-834e-0000f8775be9"))
  219. IPointCollection : IUnknown
  220. {
  221.     //
  222.     // Raw methods provided by interface
  223.     //
  224.     virtual HRESULT __stdcall get_PointCount (
  225.         long * cPoints ) = 0;
  226.     virtual HRESULT __stdcall get_Point (
  227.         long i,
  228.         struct IPoint * * Point ) = 0;
  229.     virtual HRESULT __stdcall AddPoint (
  230.         struct IPoint * inPoint,
  231.         VARIANT * before = &vtMissing,
  232.         VARIANT * after = &vtMissing ) = 0;
  233.     virtual HRESULT __stdcall UpdatePoint (
  234.         long i,
  235.         struct IPoint * p ) = 0;
  236.     virtual HRESULT __stdcall QueryPoints (
  237.         long Index,
  238.         long Count,
  239.         struct IPoint * * Points ) = 0;
  240.     virtual HRESULT __stdcall InsertPoints (
  241.         long Index,
  242.         long Count,
  243.         struct IPoint * * newPoints ) = 0;
  244.     virtual HRESULT __stdcall InsertPointCollection (
  245.         long Index,
  246.         struct IPointCollection * newPoints ) = 0;
  247.     virtual HRESULT __stdcall AddPoints (
  248.         long Count,
  249.         struct IPoint * * newPoints ) = 0;
  250.     virtual HRESULT __stdcall AddPointCollection (
  251.         struct IPointCollection * newPoints ) = 0;
  252.     virtual HRESULT __stdcall SetPoints (
  253.         long Count,
  254.         struct IPoint * * newPoints ) = 0;
  255.     virtual HRESULT __stdcall SetPointCollection (
  256.         struct IPointCollection * newPoints ) = 0;
  257.     virtual HRESULT __stdcall RemovePoints (
  258.         long Index,
  259.         long Count ) = 0;
  260.     virtual HRESULT __stdcall get_EnumVertices (
  261.         struct IEnumVertex * * newVertexEnumerator ) = 0;
  262.     virtual HRESULT __stdcall AddWKSPoints (
  263.         long Count,
  264.         WKSPoint * pointStructures ) = 0;
  265.     virtual HRESULT __stdcall SetWKSPoints (
  266.         long Count,
  267.         WKSPoint * pointStructures ) = 0;
  268.     virtual HRESULT __stdcall QueryWKSPoints (
  269.         long Index,
  270.         long Count,
  271.         WKSPoint * pointStructures ) = 0;
  272.     virtual HRESULT __stdcall InsertWKSPoints (
  273.         long Index,
  274.         long Count,
  275.         WKSPoint * newPoints ) = 0;
  276.     virtual HRESULT __stdcall ReplacePoints (
  277.         long Index,
  278.         long comingIn,
  279.         long goingAway,
  280.         struct IPoint * * newPoints ) = 0;
  281.     virtual HRESULT __stdcall ReplacePointCollection (
  282.         long Index,
  283.         long goingAway,
  284.         struct IPointCollection * newPoints ) = 0;
  285.     virtual HRESULT __stdcall QueryPoint (
  286.         long Index,
  287.         struct IPoint * Point ) = 0;
  288. };
  289. struct __declspec(uuid("4cf93638-eb81-11d2-9f2d-00c04f6bc8e8"))
  290. IEnumVertex : IUnknown
  291. {
  292.     //
  293.     // Raw methods provided by interface
  294.     //
  295.     virtual HRESULT __stdcall Next (
  296.         struct IPoint * * outVertex,
  297.         long * outPartIndex,
  298.         long * vertexIndex ) = 0;
  299.     virtual HRESULT __stdcall QueryNext (
  300.         struct IPoint * vertex,
  301.         long * outPartIndex,
  302.         long * vertexIndex ) = 0;
  303.     virtual HRESULT __stdcall Previous (
  304.         struct IPoint * * outVertex,
  305.         long * outPartIndex,
  306.         long * vertexIndex ) = 0;
  307.     virtual HRESULT __stdcall QueryPrevious (
  308.         struct IPoint * vertex,
  309.         long * outPartIndex,
  310.         long * vertexIndex ) = 0;
  311.     virtual HRESULT __stdcall NextInPart (
  312.         struct IPoint * * outVertex,
  313.         long * OutVertexIndex ) = 0;
  314.     virtual HRESULT __stdcall QueryNextInPart (
  315.         struct IPoint * vertex,
  316.         long * OutVertexIndex ) = 0;
  317.     virtual HRESULT __stdcall Skip (
  318.         long numVertices ) = 0;
  319.     virtual HRESULT __stdcall Reset ( ) = 0;
  320.     virtual HRESULT __stdcall Clone (
  321.         struct IEnumVertex * * outEnumerator ) = 0;
  322.     virtual HRESULT __stdcall ResetToEnd ( ) = 0;
  323.     virtual HRESULT __stdcall SetAt (
  324.         long iPart,
  325.         long iVertex ) = 0;
  326.     virtual HRESULT __stdcall IsLastInPart (
  327.         VARIANT_BOOL * IsLastInPart ) = 0;
  328.     virtual HRESULT __stdcall put_X (
  329.         double X ) = 0;
  330.     virtual HRESULT __stdcall put_Y (
  331.         double Y ) = 0;
  332.     virtual HRESULT __stdcall put_Z (
  333.         double Z ) = 0;
  334.     virtual HRESULT __stdcall put_M (
  335.         double M ) = 0;
  336.     virtual HRESULT __stdcall put_ID (
  337.         long pointID ) = 0;
  338.     virtual HRESULT __stdcall put_Attribute (
  339.         enum esriGeometryAttributes attributeType,
  340.         double Value ) = 0;
  341. };
  342. struct __declspec(uuid("0a82061c-95cb-11d0-82f7-0000f8034032"))
  343. IPath : ICurve
  344. {
  345.     //
  346.     // Raw methods provided by interface
  347.     //
  348.     virtual HRESULT __stdcall Generalize (
  349.         double maxAllowableOffset ) = 0;
  350.     virtual HRESULT __stdcall Smooth (
  351.         double maxAllowableOffset ) = 0;
  352.     virtual HRESULT __stdcall SmoothLocal (
  353.         long vertexIndex ) = 0;
  354.     virtual HRESULT __stdcall QueryChordLengthTangents (
  355.         long pointIndex,
  356.         struct IPoint * prevTangent,
  357.         VARIANT_BOOL * prevSetByUser,
  358.         struct IPoint * nextTangent,
  359.         VARIANT_BOOL * nextSetByUser ) = 0;
  360.     virtual HRESULT __stdcall SetChordLengthTangents (
  361.         long pointIndex,
  362.         struct IPoint * prevTangent,
  363.         struct IPoint * nextTangent ) = 0;
  364. };
  365. struct __declspec(uuid("592121ae-4cc8-11d1-834e-0000f8775be9"))
  366. IRing : IPath
  367. {
  368.     //
  369.     // Raw methods provided by interface
  370.     //
  371.     virtual HRESULT __stdcall get_IsExterior (
  372.         VARIANT_BOOL * IsExterior ) = 0;
  373.     virtual HRESULT __stdcall Reshape (
  374.         struct IPath * reshapeSource,
  375.         VARIANT_BOOL * reshapeHappened ) = 0;
  376.     virtual HRESULT __stdcall Close ( ) = 0;
  377.     virtual HRESULT __stdcall GetSubcurveEx (
  378.         double fromDistance,
  379.         double toDistance,
  380.         VARIANT_BOOL asRatio,
  381.         VARIANT_BOOL isCCW,
  382.         VARIANT_BOOL useRingOrientation,
  383.         struct ICurve * * outSubcurve ) = 0;
  384. };
  385. struct __declspec(uuid("7b91ff70-53a9-11d0-a8f3-00608c85ede5"))
  386. IESRIShape : IUnknown
  387. {
  388.     //
  389.     // Raw methods provided by interface
  390.     //
  391.     virtual HRESULT __stdcall QueryESRIShapeType (
  392.         enum esriShapeType * basicShapeType,
  393.         long * shapeModifiers ) = 0;
  394.     virtual HRESULT __stdcall get_ESRIShapeSize (
  395.         long * cBytes ) = 0;
  396.     virtual HRESULT __stdcall get_ESRIShapeSizeEx (
  397.         long modifiersToAllow,
  398.         long * cBytes ) = 0;
  399.     virtual HRESULT __stdcall ImportFromESRIShape (
  400.         long * byteCountInOut,
  401.         unsigned char * byteBuffer ) = 0;
  402.     virtual HRESULT __stdcall NonTrustedImportFromESRIShape (
  403.         long * byteCountInOut,
  404.         unsigned char * byteBuffer ) = 0;
  405.     virtual HRESULT __stdcall AttachToESRIShape (
  406.         long * byteCountInOut,
  407.         unsigned char * byteBuffer ) = 0;
  408.     virtual HRESULT __stdcall ExportToESRIShape (
  409.         long * byteCountInOut,
  410.         unsigned char * byteBuffer ) = 0;
  411.     virtual HRESULT __stdcall ExportToESRIShapeEx (
  412.         long modifiersToAllow,
  413.         VARIANT_BOOL useArcViewNaNs,
  414.         long * byteCountInOut,
  415.         unsigned char * byteBuffer ) = 0;
  416.     virtual HRESULT __stdcall GetModifierOffset (
  417.         enum esriShapeModifiers modifierType,
  418.         long * Offset ) = 0;
  419. };
  420. enum esriShapeType
  421. {
  422.     esriShapeNull = 0,
  423.     esriShapePoint = 1,
  424.     esriShapePointM = 21,
  425.     esriShapePointZM = 11,
  426.     esriShapePointZ = 9,
  427.     esriShapeMultipoint = 8,
  428.     esriShapeMultipointM = 28,
  429.     esriShapeMultipointZM = 18,
  430.     esriShapeMultipointZ = 20,
  431.     esriShapePolyline = 3,
  432.     esriShapePolylineM = 23,
  433.     esriShapePolylineZM = 13,
  434.     esriShapePolylineZ = 10,
  435.     esriShapePolygon = 5,
  436.     esriShapePolygonM = 25,
  437.     esriShapePolygonZM = 15,
  438.     esriShapePolygonZ = 19,
  439.     esriShapeMultiPatchM = 31,
  440.     esriShapeMultiPatch = 32,
  441.     esriShapeGeneralPolyline = 50,
  442.     esriShapeGeneralPolygon = 51,
  443.     esriShapeGeneralPoint = 52,
  444.     esriShapeGeneralMultipoint = 53,
  445.     esriShapeGeneralMultiPatch = 54,
  446.     esriShapeTypeLast = 55
  447. };
  448. enum esriShapeModifiers
  449. {
  450.     esriShapeHasZs = -2147483648,
  451.     esriShapeHasMs = 1073741824,
  452.     esriShapeHasCurves = 536870912,
  453.     esriShapeHasIDs = 268435456,
  454.     esriShapeHasNormals = 134217728,
  455.     esriShapeHasTextures = 67108864,
  456.     esriShapeHasPartIDs = 33554432,
  457.     esriShapeHasMaterials = 16777216,
  458.     esriShapeIsCompressed = 8388608,
  459.     esriShapeModifierMask = -16777216,
  460.     esriShapeMultiPatchModifierMask = 15728640,
  461.     esriShapeBasicTypeMask = 255,
  462.     esriShapeBasicModifierMask = -1073741824,
  463.     esriShapeNonBasicModifierMask = 1056964608,
  464.     esriShapeExtendedModifierMask = -587202560
  465. };
  466. struct __declspec(uuid("a9da7976-4b22-11d1-834c-0000f8775be9"))
  467. IESRISegment : IUnknown
  468. {
  469.     //
  470.     // Raw methods provided by interface
  471.     //
  472.     virtual HRESULT __stdcall get_ESRISegmentSize (
  473.         long * cBytes ) = 0;
  474.     virtual HRESULT __stdcall get_MaxDenseSegments (
  475.         double maxDeviation,
  476.         long * cBytes ) = 0;
  477.     virtual HRESULT __stdcall ImportFromESRISegment (
  478.         WKSPoint * from,
  479.         WKSPoint * to,
  480.         double * zs,
  481.         double * ms,
  482.         long * IDs,
  483.         long numModifierBytes,
  484.         unsigned char * segmentBuffer,
  485.         long * cBytesRead ) = 0;
  486.     virtual HRESULT __stdcall ExportToESRISegment (
  487.         unsigned char * byteBuffer,
  488.         long * cBytesWrote ) = 0;
  489. };
  490. struct __declspec(uuid("b3fe6b20-4fc2-11d1-834e-0000f8775be9"))
  491. ISegmentCollection : IUnknown
  492. {
  493.     //
  494.     // Raw methods provided by interface
  495.     //
  496.     virtual HRESULT __stdcall get_SegmentCount (
  497.         long * cSegments ) = 0;
  498.     virtual HRESULT __stdcall get_Segment (
  499.         long i,
  500.         struct ISegment * * Segment ) = 0;
  501.     virtual HRESULT __stdcall AddSegment (
  502.         struct ISegment * inSegment,
  503.         VARIANT * before = &vtMissing,
  504.         VARIANT * after = &vtMissing ) = 0;
  505.     virtual HRESULT __stdcall QuerySegments (
  506.         long Index,
  507.         long Count,
  508.         struct ISegment * * segments ) = 0;
  509.     virtual HRESULT __stdcall AddSegments (
  510.         long Count,
  511.         struct ISegment * * newSegments ) = 0;
  512.     virtual HRESULT __stdcall AddSegmentCollection (
  513.         struct ISegmentCollection * segments ) = 0;
  514.     virtual HRESULT __stdcall InsertSegments (
  515.         long Index,
  516.         long Count,
  517.         struct ISegment * * newSegments ) = 0;
  518.     virtual HRESULT __stdcall InsertSegmentCollection (
  519.         long Index,
  520.         struct ISegmentCollection * newSegments ) = 0;
  521.     virtual HRESULT __stdcall InsertSegmentCollectionEx (
  522.         long Index,
  523.         long start,
  524.         long Count,
  525.         struct ISegmentCollection * newSegments ) = 0;
  526.     virtual HRESULT __stdcall ReplaceSegments (
  527.         long Index,
  528.         long comingIn,
  529.         long goingAway,
  530.         struct ISegment * * newSegments ) = 0;
  531.     virtual HRESULT __stdcall ReplaceSegmentCollection (
  532.         long Index,
  533.         long goingAway,
  534.         struct ISegmentCollection * newSegments ) = 0;
  535.     virtual HRESULT __stdcall RemoveSegments (
  536.         long Index,
  537.         long Count,
  538.         VARIANT_BOOL closeGap ) = 0;
  539.     virtual HRESULT __stdcall SetCircle (
  540.         struct IPoint * cp,
  541.         double circleRadius ) = 0;
  542.     virtual HRESULT __stdcall SetRectangle (
  543.         struct IEnvelope * inEnvelope ) = 0;
  544.     virtual HRESULT __stdcall SetSegments (
  545.         long Count,
  546.         struct ISegment * * newSegments ) = 0;
  547.     virtual HRESULT __stdcall SetSegmentCollection (
  548.         struct ISegmentCollection * newSegments ) = 0;
  549.     virtual HRESULT __stdcall get_EnumSegments (
  550.         struct IEnumSegment * * newSegmentEnumerator ) = 0;
  551.     virtual HRESULT __stdcall get_EnumCurve (
  552.         struct IEnumCurve * * newCurveEnumerator ) = 0;
  553.     virtual HRESULT __stdcall HasNonLinearSegments (
  554.         VARIANT_BOOL * nonLinearSegments ) = 0;
  555.     virtual HRESULT __stdcall get_IndexedEnumSegments (
  556.         struct IGeometry * queryGeometry,
  557.         struct IEnumSegment * * newIndexedSegmentEnumerator ) = 0;
  558.     virtual HRESULT __stdcall SynchronizeEmptyAttributes ( ) = 0;
  559.     virtual HRESULT __stdcall SegmentsChanged ( ) = 0;
  560. };
  561. struct __declspec(uuid("c63faf0e-1040-11d1-a27d-0000f8775fbf"))
  562. IEnumSegment : IUnknown
  563. {
  564.     //
  565.     // Raw methods provided by interface
  566.     //
  567.     virtual HRESULT __stdcall NextEx (
  568.         esriSegmentInfo * outSegment ) = 0;
  569.     virtual HRESULT __stdcall Next (
  570.         struct ISegment * * outSegment,
  571.         long * outPartIndex,
  572.         long * SegmentIndex ) = 0;
  573.     virtual HRESULT __stdcall Skip (
  574.         long numSegments ) = 0;
  575.     virtual HRESULT __stdcall Reset ( ) = 0;
  576.     virtual HRESULT __stdcall Clone (
  577.         struct IEnumSegment * * outEnumerator ) = 0;
  578.     virtual HRESULT __stdcall ResetToEnd ( ) = 0;
  579.     virtual HRESULT __stdcall Previous (
  580.         struct ISegment * * outSegment,
  581.         long * outPartIndex,
  582.         long * SegmentIndex ) = 0;
  583.     virtual HRESULT __stdcall SetAt (
  584.         long iPart,
  585.         long ISegment ) = 0;
  586.     virtual HRESULT __stdcall NextInPartEx (
  587.         esriSegmentInfo * outSegment ) = 0;
  588.     virtual HRESULT __stdcall NextInPart (
  589.         struct ISegment * * outSegment,
  590.         long * OutSegmentIndex ) = 0;
  591.     virtual HRESULT __stdcall IsLastInPart (
  592.         VARIANT_BOOL * IsLastInPart ) = 0;
  593.     virtual HRESULT __stdcall get_IsRecycling (
  594.         VARIANT_BOOL * IsRecycling ) = 0;
  595. };
  596. struct _esriSegmentInfo
  597. {
  598.     long iPart;
  599.     long iRelSegment;
  600.     long iAbsSegment;
  601.     VARIANT_BOOL bLastInPart;
  602.     struct ISegment * pSegment;
  603. };
  604. struct __declspec(uuid("a478c6a8-ddad-11d2-9f27-00c04f6bc8e8"))
  605. IEnumCurve : IUnknown
  606. {
  607.     //
  608.     // Raw methods provided by interface
  609.     //
  610.     virtual HRESULT __stdcall Clone (
  611.         struct IEnumCurve * * outEnumerator ) = 0;
  612.     virtual HRESULT __stdcall Reset ( ) = 0;
  613.     virtual HRESULT __stdcall Next (
  614.         double distance ) = 0;
  615.     virtual HRESULT __stdcall get_Segment (
  616.         struct ISegment * * Segment ) = 0;
  617.     virtual HRESULT __stdcall get_SegmentDistance (
  618.         double * SegmentDistance ) = 0;
  619.     virtual HRESULT __stdcall get_CurveDistance (
  620.         double * CurveDistance ) = 0;
  621.     virtual HRESULT __stdcall get_PartIndex (
  622.         long * PartIndex ) = 0;
  623.     virtual HRESULT __stdcall get_SegmentIndex (
  624.         long * SegmentIndex ) = 0;
  625.     virtual HRESULT __stdcall get_StopReason (
  626.         enum esriCurveIteratorEnum * StopReason ) = 0;
  627.     virtual HRESULT __stdcall put_StopOptions (
  628.         enum esriCurveIteratorEnum StopOptions ) = 0;
  629.     virtual HRESULT __stdcall get_StopOptions (
  630.         enum esriCurveIteratorEnum * StopOptions ) = 0;
  631.     virtual HRESULT __stdcall GetSubcurve (
  632.         double fromDistance,
  633.         double toDistance,
  634.         VARIANT_BOOL asRatio,
  635.         struct ICurve * * subcurve ) = 0;
  636. };
  637. enum esriCurveIteratorEnum
  638. {
  639.     esriCurveIteratorNoStop = 0,
  640.     esriCurveIteratorStopAtPartFrom = 1,
  641.     esriCurveIteratorStopAtPartTo = 2,
  642.     esriCurveIteratorStopAtPartEndPoints = 3,
  643.     esriCurveIteratorStopAtCurveEnd = 4
  644. };
  645. struct __declspec(uuid("f643a012-c208-48db-b2d6-565f52b55c8e"))
  646. IPointCollection2 : IPointCollection
  647. {
  648.     //
  649.     // Raw methods provided by interface
  650.     //
  651.     virtual HRESULT __stdcall GetPoints (
  652.         long Index,
  653.         long Count,
  654.         struct IPoint * * Points ) = 0;
  655. };
  656. struct __declspec(uuid("af10d3e8-f2f8-49ec-a6c5-7018099eeaed"))
  657. IPointCollection3 : IPointCollection2
  658. {
  659.     //
  660.     // Raw methods provided by interface
  661.     //
  662.     virtual HRESULT __stdcall get_IndexedEnumVertices (
  663.         struct IGeometry * queryGeometry,
  664.         struct IEnumVertex * * indexedVertexEnumerator ) = 0;
  665. };
  666. struct __declspec(uuid("773f7279-aefb-11d5-8112-00c04fa0adf8"))
  667. IPointCollection4 : IPointCollection3
  668. {
  669.     //
  670.     // Raw methods provided by interface
  671.     //
  672.     virtual HRESULT __stdcall AddWKSPointZs (
  673.         long Count,
  674.         WKSPointZ * pointStructures ) = 0;
  675.     virtual HRESULT __stdcall SetWKSPointZs (
  676.         long Count,
  677.         WKSPointZ * pointStructures ) = 0;
  678.     virtual HRESULT __stdcall QueryWKSPointZs (
  679.         long Index,
  680.         long Count,
  681.         WKSPointZ * pointStructures ) = 0;
  682.     virtual HRESULT __stdcall InsertWKSPointZs (
  683.         long Index,
  684.         long Count,
  685.         WKSPointZ * newPoints ) = 0;
  686. };
  687. struct __declspec(uuid("4aff82e0-f984-11d1-bca7-0000f875bcce"))
  688. IPolycurve : ICurve
  689. {
  690.     //
  691.     // Raw methods provided by interface
  692.     //
  693.     virtual HRESULT __stdcall Densify (
  694.         double maxSegmentLength,
  695.         double maxDeviation ) = 0;
  696.     virtual HRESULT __stdcall Generalize (
  697.         double maxAllowableOffset ) = 0;
  698.     virtual HRESULT __stdcall Weed (
  699.         double maxAllowableOffsetFactor ) = 0;
  700.     virtual HRESULT __stdcall Smooth (
  701.         double maxAllowableOffset ) = 0;
  702.     virtual HRESULT __stdcall SplitAtPoint (
  703.         struct IPoint * splitPoint,
  704.         VARIANT_BOOL projectOnto,
  705.         VARIANT_BOOL createPart,
  706.         VARIANT_BOOL * SplitHappened,
  707.         long * newPartIndex,
  708.         long * newSegmentIndex ) = 0;
  709.     virtual HRESULT __stdcall SplitAtDistance (
  710.         double distance,
  711.         VARIANT_BOOL asRatio,
  712.         VARIANT_BOOL createPart,
  713.         VARIANT_BOOL * SplitHappened,
  714.         long * newPartIndex,
  715.         long * newSegmentIndex ) = 0;
  716. };
  717. struct __declspec(uuid("f2485894-4cbd-11d1-834e-0000f8775be9"))
  718. IPolyline : IPolycurve
  719. {
  720.     //
  721.     // Raw methods provided by interface
  722.     //
  723.     virtual HRESULT __stdcall Reshape (
  724.         struct IPath * reshapeSource,
  725.         VARIANT_BOOL * didReshape ) = 0;
  726.     virtual HRESULT __stdcall SimplifyNetwork ( ) = 0;
  727. };
  728. struct __declspec(uuid("3be78ad0-886e-11d1-bc78-0000f875bcce"))
  729. ITransform2D : IUnknown
  730. {
  731.     //
  732.     // Raw methods provided by interface
  733.     //
  734.     virtual HRESULT __stdcall Move (
  735.         double dx,
  736.         double dy ) = 0;
  737.     virtual HRESULT __stdcall MoveVector (
  738.         struct ILine * v ) = 0;
  739.     virtual HRESULT __stdcall Scale (
  740.         struct IPoint * Origin,
  741.         double sx,
  742.         double sy ) = 0;
  743.     virtual HRESULT __stdcall Rotate (
  744.         struct IPoint * Origin,
  745.         double rotationAngle ) = 0;
  746.     virtual HRESULT __stdcall Transform (
  747.         enum esriTransformDirection direction,
  748.         struct ITransformation * transformation ) = 0;
  749. };
  750. struct __declspec(uuid("40d717c9-10c2-11d4-9f59-00c04f6bdf0d"))
  751. IVector : IUnknown
  752. {
  753.     //
  754.     // Raw methods provided by interface
  755.     //
  756.     virtual HRESULT __stdcall get_Dimension (
  757.         long * Dimension ) = 0;
  758.     virtual HRESULT __stdcall get_IsEmpty (
  759.         VARIANT_BOOL * IsEmpty ) = 0;
  760.     virtual HRESULT __stdcall SetEmpty ( ) = 0;
  761.     virtual HRESULT __stdcall get_ComponentByIndex (
  762.         long componentIndex,
  763.         double * componentValue ) = 0;
  764.     virtual HRESULT __stdcall put_ComponentByIndex (
  765.         long componentIndex,
  766.         double componentValue ) = 0;
  767.     virtual HRESULT __stdcall get_Magnitude (
  768.         double * Magnitude ) = 0;
  769.     virtual HRESULT __stdcall put_Magnitude (
  770.         double Magnitude ) = 0;
  771.     virtual HRESULT __stdcall Normalize ( ) = 0;
  772.     virtual HRESULT __stdcall Scale (
  773.         double ScaleFactor ) = 0;
  774.     virtual HRESULT __stdcall AddVector (
  775.         struct IVector * otherVector,
  776.         struct IVector * * result ) = 0;
  777.     virtual HRESULT __stdcall SubtractVector (
  778.         struct IVector * otherVector,
  779.         struct IVector * * result ) = 0;
  780.     virtual HRESULT __stdcall ConstructAddVector (
  781.         struct IVector * vector1,
  782.         struct IVector * vector2 ) = 0;
  783.     virtual HRESULT __stdcall ConstructSubtractVector (
  784.         struct IVector * vector1,
  785.         struct IVector * vector2 ) = 0;
  786.     virtual HRESULT __stdcall DotProduct (
  787.         struct IVector * otherVector,
  788.         double * result ) = 0;
  789. };
  790. struct __declspec(uuid("b3fa5971-ada3-11d2-9fae-00c04f8ece3d"))
  791. IVector3D : IVector
  792. {
  793.     //
  794.     // Raw methods provided by interface
  795.     //
  796.     virtual HRESULT __stdcall get_XComponent (
  797.         double * dx ) = 0;
  798.     virtual HRESULT __stdcall put_XComponent (
  799.         double dx ) = 0;
  800.     virtual HRESULT __stdcall get_YComponent (
  801.         double * dy ) = 0;
  802.     virtual HRESULT __stdcall put_YComponent (
  803.         double dy ) = 0;
  804.     virtual HRESULT __stdcall get_ZComponent (
  805.         double * dz ) = 0;
  806.     virtual HRESULT __stdcall put_ZComponent (
  807.         double dz ) = 0;
  808.     virtual HRESULT __stdcall get_Inclination (
  809.         double * Inclination ) = 0;
  810.     virtual HRESULT __stdcall put_Inclination (
  811.         double Inclination ) = 0;
  812.     virtual HRESULT __stdcall get_Azimuth (
  813.         double * Azimuth ) = 0;
  814.     virtual HRESULT __stdcall put_Azimuth (
  815.         double Azimuth ) = 0;
  816.     virtual HRESULT __stdcall Move (
  817.         double dx,
  818.         double dy,
  819.         double dz ) = 0;
  820.     virtual HRESULT __stdcall QueryComponents (
  821.         double * dx,
  822.         double * dy,
  823.         double * dz ) = 0;
  824.     virtual HRESULT __stdcall SetComponents (
  825.         double dx,
  826.         double dy,
  827.         double dz ) = 0;
  828.     virtual HRESULT __stdcall ConstructDifference (
  829.         struct IPoint * point1,
  830.         struct IPoint * point2 ) = 0;
  831.     virtual HRESULT __stdcall Rotate (
  832.         double Angle,
  833.         struct IVector3D * axis ) = 0;
  834.     virtual HRESULT __stdcall PolarSet (
  835.         double Azimuth,
  836.         double Inclination,
  837.         double radiusLength ) = 0;
  838.     virtual HRESULT __stdcall PolarQuery (
  839.         double * Azimuth,
  840.         double * Inclination,
  841.         double * radiusLength ) = 0;
  842.     virtual HRESULT __stdcall PolarMove (
  843.         double dAzimuth,
  844.         double dInclination,
  845.         double dRadius ) = 0;
  846.     virtual HRESULT __stdcall CrossProduct (
  847.         struct IVector * otherVector,
  848.         struct IVector * * result ) = 0;
  849.     virtual HRESULT __stdcall ConstructCrossProduct (
  850.         struct IVector * vector1,
  851.         struct IVector * vector2 ) = 0;
  852. };
  853. struct __declspec(uuid("4df409c0-2b14-11d2-bcbd-0000f875bcce"))
  854. ITopologicalSegment : ISegment
  855. {
  856.     //
  857.     // Raw methods provided by interface
  858.     //
  859.     virtual HRESULT __stdcall get_YAtX (
  860.         WKSPoint * p,
  861.         double * Y ) = 0;
  862.     virtual HRESULT __stdcall BreakOverlap (
  863.         struct ITopologicalSegment * otherSegment,
  864.         struct ITopologicalSegment * interpolator,
  865.         struct ITopologicalSegment * * busted,
  866.         long * overlapKind ) = 0;
  867.     virtual HRESULT __stdcall SplitYMonotonic (
  868.         long * numSegments,
  869.         struct ITopologicalSegment * * segments,
  870.         VARIANT_BOOL * flipped ) = 0;
  871. };
  872. struct __declspec(uuid("fa44c5f5-16c6-11d2-aa7a-00c04fa37ba4"))
  873. IEllipticArc : ICurve
  874. {
  875.     //
  876.     // Raw methods provided by interface
  877.     //
  878.     virtual HRESULT __stdcall QueryCoords (
  879.         VARIANT_BOOL ellipseStd,
  880.         struct IPoint * Center,
  881.         struct IPoint * from,
  882.         struct IPoint * to,
  883.         double * rotationAngle,
  884.         double * minorMajorRatio,
  885.         VARIANT_BOOL * isCCW,
  886.         VARIANT_BOOL * minor ) = 0;
  887.     virtual HRESULT __stdcall PutCoords (
  888.         VARIANT_BOOL ellipseStd,
  889.         struct IPoint * Center,
  890.         struct IPoint * from,
  891.         struct IPoint * to,
  892.         double rotationAngle,
  893.         double minorMajorRatio,
  894.         enum esriArcOrientation orientation ) = 0;
  895.     virtual HRESULT __stdcall QueryCoordsByAngle (
  896.         VARIANT_BOOL ellipseStd,
  897.         struct IPoint * Center,
  898.         double * FromAngle,
  899.         double * CentralAngle,
  900.         double * rotationAngle,
  901.         double * semiMajor,
  902.         double * minorMajorRatio ) = 0;
  903.     virtual HRESULT __stdcall PutCoordsByAngle (
  904.         VARIANT_BOOL ellipseStd,
  905.         struct IPoint * Center,
  906.         double FromAngle,
  907.         double CentralAngle,
  908.         double rotationAngle,
  909.         double semiMajor,
  910.         double minorMajorRatio ) = 0;
  911.     virtual HRESULT __stdcall get_CenterPoint (
  912.         struct IPoint * * Center ) = 0;
  913.     virtual HRESULT __stdcall QueryCenterPoint (
  914.         struct IPoint * Center ) = 0;
  915.     virtual HRESULT __stdcall GetAxes (
  916.         double * semiMajor,
  917.         double * semiMinor,
  918.         double * minorMajorRatio ) = 0;
  919.     virtual HRESULT __stdcall PutAxes (
  920.         double semiMajor,
  921.         double minorMajorRatio ) = 0;
  922.     virtual HRESULT __stdcall get_FromAngle (
  923.         VARIANT_BOOL ellipseStd,
  924.         double * FromAngle ) = 0;
  925.     virtual HRESULT __stdcall put_FromAngle (
  926.         VARIANT_BOOL ellipseStd,
  927.         double FromAngle ) = 0;
  928.     virtual HRESULT __stdcall get_ToAngle (
  929.         VARIANT_BOOL ellipseStd,
  930.         double * ToAngle ) = 0;
  931.     virtual HRESULT __stdcall put_ToAngle (
  932.         VARIANT_BOOL ellipseStd,
  933.         double ToAngle ) = 0;
  934.     virtual HRESULT __stdcall get_CentralAngle (
  935.         double * CentralAngle ) = 0;
  936.     virtual HRESULT __stdcall put_CentralAngle (
  937.         double CentralAngle ) = 0;
  938.     virtual HRESULT __stdcall get_IsPoint (
  939.         VARIANT_BOOL * IsPoint ) = 0;
  940.     virtual HRESULT __stdcall get_IsLine (
  941.         VARIANT_BOOL * IsLine ) = 0;
  942.     virtual HRESULT __stdcall get_IsCounterClockwise (
  943.         VARIANT_BOOL * isCCW ) = 0;
  944.     virtual HRESULT __stdcall put_IsCounterClockwise (
  945.         VARIANT_BOOL isCCW ) = 0;
  946.     virtual HRESULT __stdcall get_IsMinor (
  947.         VARIANT_BOOL * IsMinor ) = 0;
  948.     virtual HRESULT __stdcall put_IsMinor (
  949.         VARIANT_BOOL IsMinor ) = 0;
  950.     virtual HRESULT __stdcall Complement ( ) = 0;
  951.     virtual HRESULT __stdcall get_IsCircular (
  952.         VARIANT_BOOL * IsCircular ) = 0;
  953. };
  954. enum esriArcOrientation
  955. {
  956.     esriArcClockwise = 0,
  957.     esriArcCounterClockwise = 1,
  958.     esriArcMinor = 2,
  959.     esriArcMajor = 3
  960. };
  961. struct __declspec(uuid("a4c490b8-9441-11d0-82f7-0000f8034032"))
  962. IPolygon : IPolycurve
  963. {
  964.     //
  965.     // Raw methods provided by interface
  966.     //
  967.     virtual HRESULT __stdcall FindExteriorRing (
  968.         struct IRing * interiorRing,
  969.         struct IRing * * exteriorRing ) = 0;
  970.     virtual HRESULT __stdcall get_ExteriorRingCount (
  971.         long * cExteriorRings ) = 0;
  972.     virtual HRESULT __stdcall QueryExteriorRings (
  973.         struct IRing * * exteriorRings ) = 0;
  974.     virtual HRESULT __stdcall get_InteriorRingCount (
  975.         struct IRing * exteriorRing,
  976.         long * cInteriorRings ) = 0;
  977.     virtual HRESULT __stdcall QueryInteriorRings (
  978.         struct IRing * exteriorRing,
  979.         struct IRing * * interiorRings ) = 0;
  980.     virtual HRESULT __stdcall Close ( ) = 0;
  981.     virtual HRESULT __stdcall SimplifyPreserveFromTo ( ) = 0;
  982. };
  983. struct __declspec(uuid("98d17b10-951c-11d2-bcfc-0000f875bcce"))
  984. IFunctionalSurface : IUnknown
  985. {
  986.     //
  987.     // Raw methods provided by interface
  988.     //
  989.     virtual HRESULT __stdcall get_Z (
  990.         double X,
  991.         double Y,
  992.         double * Z ) = 0;
  993.     virtual HRESULT __stdcall get_Domain (
  994.         struct IPolygon * * Domain ) = 0;
  995. };
  996. struct __declspec(uuid("1e402754-0e2a-11d3-9f33-00c04f6bdd7f"))
  997. ISegmentGraph : IUnknown
  998. {
  999.     //
  1000.     // Raw methods provided by interface
  1001.     //
  1002.     virtual HRESULT __stdcall GetCursor (
  1003.         struct IPoint * p,
  1004.         struct ISegmentGraphCursor * * cursor ) = 0;
  1005.     virtual HRESULT __stdcall Load (
  1006.         struct IEnumGeometry * geometries,
  1007.         VARIANT_BOOL generateFaces,
  1008.         VARIANT_BOOL takeOwnership ) = 0;
  1009.     virtual HRESULT __stdcall SetEmpty ( ) = 0;
  1010.     virtual HRESULT __stdcall get_Envelope (
  1011.         struct IEnvelope * * Envelope ) = 0;
  1012. };
  1013. struct __declspec(uuid("329bfbd8-0e2a-11d3-9f33-00c04f6bdd7f"))
  1014. ISegmentGraphCursor : IUnknown
  1015. {
  1016.     //
  1017.     // Raw methods provided by interface
  1018.     //
  1019.     virtual HRESULT __stdcall get_Location (
  1020.         struct IPoint * * currentGraphLocation ) = 0;
  1021.     virtual HRESULT __stdcall QueryLocation (
  1022.         struct IPoint * currentGraphLocation ) = 0;
  1023.     virtual HRESULT __stdcall get_CurrentTrace (
  1024.         struct IPolyline * * CurrentTrace ) = 0;
  1025.     virtual HRESULT __stdcall MoveTo (
  1026.         struct IPoint * newLocation,
  1027.         VARIANT_BOOL * canMove ) = 0;
  1028.     virtual HRESULT __stdcall FinishMoveTo (
  1029.         struct IPoint * newLocation ) = 0;
  1030.     virtual HRESULT __stdcall Reset (
  1031.         struct IPoint * startPoint ) = 0;
  1032. };
  1033. struct __declspec(uuid("bd2503ef-dea7-11d0-867f-0000f8751720"))
  1034. IEnumGeometry : IUnknown
  1035. {
  1036.     //
  1037.     // Raw methods provided by interface
  1038.     //
  1039.     virtual HRESULT __stdcall Next (
  1040.         struct IGeometry * * nextGeometry ) = 0;
  1041.     virtual HRESULT __stdcall Reset ( ) = 0;
  1042.     virtual HRESULT __stdcall get_Count (
  1043.         long * GeometryCount ) = 0;
  1044. };
  1045. struct __declspec(uuid("c801565e-99ca-11d0-82f7-0000f8034032"))
  1046. IGeometryCollection : IUnknown
  1047. {
  1048.     //
  1049.     // Raw methods provided by interface
  1050.     //
  1051.     virtual HRESULT __stdcall get_GeometryCount (
  1052.         long * cParts ) = 0;
  1053.     virtual HRESULT __stdcall get_Geometry (
  1054.         long Index,
  1055.         struct IGeometry * * outPart ) = 0;
  1056.     virtual HRESULT __stdcall AddGeometry (
  1057.         struct IGeometry * inGeometry,
  1058.         VARIANT * before = &vtMissing,
  1059.         VARIANT * after = &vtMissing ) = 0;
  1060.     virtual HRESULT __stdcall QueryGeometries (
  1061.         long Index,
  1062.         long Count,
  1063.         struct IGeometry * * geometries ) = 0;
  1064.     virtual HRESULT __stdcall AddGeometries (
  1065.         long Count,
  1066.         struct IGeometry * * newGeometries ) = 0;
  1067.     virtual HRESULT __stdcall AddGeometryCollection (
  1068.         struct IGeometryCollection * newGeometries ) = 0;
  1069.     virtual HRESULT __stdcall InsertGeometries (
  1070.         long Index,
  1071.         long Count,
  1072.         struct IGeometry * * newGeometries ) = 0;
  1073.     virtual HRESULT __stdcall InsertGeometryCollection (
  1074.         long Index,
  1075.         struct IGeometryCollection * newGeometries ) = 0;
  1076.     virtual HRESULT __stdcall SetGeometries (
  1077.         long Count,
  1078.         struct IGeometry * * newGeometries ) = 0;
  1079.     virtual HRESULT __stdcall SetGeometryCollection (
  1080.         struct IGeometryCollection * newParts ) = 0;
  1081.     virtual HRESULT __stdcall RemoveGeometries (
  1082.         long Index,
  1083.         long Count ) = 0;
  1084.     virtual HRESULT __stdcall GeometriesChanged ( ) = 0;
  1085. };
  1086. struct __declspec(uuid("f3c041c8-ae4d-11d2-9c93-00c04fb17838"))
  1087. IMultiPatch : IGeometry
  1088. {
  1089.     //
  1090.     // Raw methods provided by interface
  1091.     //
  1092.     virtual HRESULT __stdcall FindBeginningRing (
  1093.         struct IRing * followingRing,
  1094.         struct IRing * * beginningRing ) = 0;
  1095.     virtual HRESULT __stdcall get_BeginningRingCount (
  1096.         long ringTypesDesired,
  1097.         long * BeginningRingCount ) = 0;
  1098.     virtual HRESULT __stdcall QueryBeginningRings (
  1099.         long ringTypesDesired,
  1100.         long numBeginningRingsRequested,
  1101.         struct IRing * * beginningRings ) = 0;
  1102.     virtual HRESULT __stdcall get_FollowingRingCount (
  1103.         struct IRing * beginningRing,
  1104.         long * FollowingRingCount ) = 0;
  1105.     virtual HRESULT __stdcall QueryFollowingRings (
  1106.         struct IRing * beginningRing,
  1107.         long numFollowingRingsRequested,
  1108.         struct IRing * * followingRings ) = 0;
  1109.     virtual HRESULT __stdcall GetRingType (
  1110.         struct IRing * queryRing,
  1111.         VARIANT_BOOL * isBeginningRing,
  1112.         enum esriMultiPatchRingType * ringType ) = 0;
  1113.     virtual HRESULT __stdcall PutRingType (
  1114.         struct IRing * queryRing,
  1115.         enum esriMultiPatchRingType ringType ) = 0;
  1116.     virtual HRESULT __stdcall get_XYFootprint (
  1117.         struct IGeometry * * XYFootprint ) = 0;
  1118.     virtual HRESULT __stdcall InvalXYFootprint ( ) = 0;
  1119. };
  1120. enum esriMultiPatchRingType
  1121. {
  1122.     esriMultiPatchInvalidRing = 1,
  1123.     esriMultiPatchUndefinedRing = 2,
  1124.     esriMultiPatchFirstRing = 4,
  1125.     esriMultiPatchRing = 8,
  1126.     esriMultiPatchOuterRing = 16,
  1127.     esriMultiPatchInnerRing = 32,
  1128.     esriMultiPatchBeginningRingMask = 28,
  1129.     esriMultiPatchFollowingRingMask = 40,
  1130.     esriMultiPatchProblemCaseRingMask = 3
  1131. };
  1132. struct __declspec(uuid("6b640160-fa9a-11d3-9f6a-00c04f6bdd7f"))
  1133. IEnumSplitPoint : IEnumVertex
  1134. {
  1135.     //
  1136.     // Raw methods provided by interface
  1137.     //
  1138.     virtual HRESULT __stdcall NextInSequence (
  1139.         struct IPoint * * splitPoint,
  1140.         long * part,
  1141.         long * vertex ) = 0;
  1142.     virtual HRESULT __stdcall PreviousInSequence (
  1143.         struct IPoint * * splitPoint,
  1144.         long * part,
  1145.         long * vertex ) = 0;
  1146.     virtual HRESULT __stdcall get_SplitHappened (
  1147.         VARIANT_BOOL * SplitHappened ) = 0;
  1148.     virtual HRESULT __stdcall get_SplitDistance (
  1149.         double * SplitDistance ) = 0;
  1150.     virtual HRESULT __stdcall QueryOldAttributes (
  1151.         esriPointAttributes * oldAttributes ) = 0;
  1152.     virtual HRESULT __stdcall get_OldM (
  1153.         double * OldM ) = 0;
  1154.     virtual HRESULT __stdcall get_OldZ (
  1155.         double * OldZ ) = 0;
  1156.     virtual HRESULT __stdcall get_OldID (
  1157.         long * OldID ) = 0;
  1158. };
  1159. struct __declspec(uuid("0cd38cbb-1c89-11d4-9f5c-00c04f6bdf0d"))
  1160. IEnumIntersection : IUnknown
  1161. {
  1162.     //
  1163.     // Raw methods provided by interface
  1164.     //
  1165.     virtual HRESULT __stdcall Next (
  1166.         double * distance,
  1167.         struct IPoint * * Point ) = 0;
  1168.     virtual HRESULT __stdcall QueryNext (
  1169.         long numWanted,
  1170.         long * numGotten,
  1171.         double * distances,
  1172.         struct IPoint * * Points ) = 0;
  1173.     virtual HRESULT __stdcall Clone (
  1174.         struct IEnumIntersection * * outEnumerator ) = 0;
  1175.     virtual HRESULT __stdcall Reset ( ) = 0;
  1176. };
  1177. struct __declspec(uuid("ea7ab50c-1a9d-11d6-9fa9-00c04f6bdf0d"))
  1178. IEnumPointAndDistance : IEnumVertex
  1179. {
  1180.     //
  1181.     // Raw methods provided by interface
  1182.     //
  1183.     virtual HRESULT __stdcall get_ContinuousSectionBefore (
  1184.         VARIANT_BOOL * ContinuousSectionBefore ) = 0;
  1185.     virtual HRESULT __stdcall get_ContinuousSectionAfter (
  1186.         VARIANT_BOOL * ContinuousSectionAfter ) = 0;
  1187.     virtual HRESULT __stdcall get_OnRightSide (
  1188.         VARIANT_BOOL * OnRightSide ) = 0;
  1189.     virtual HRESULT __stdcall get_DistanceAlongCurve (
  1190.         double * distanceAlong ) = 0;
  1191. };
  1192. struct __declspec(uuid("058def33-2848-11d4-9f82-00c04f6bc8e8"))
  1193. ICurve2 : ICurve
  1194. {
  1195.     //
  1196.     // Raw methods provided by interface
  1197.     //
  1198.     virtual HRESULT __stdcall PutCoordsEx (
  1199.         struct IPoint * from,
  1200.         struct IPoint * to ) = 0;
  1201. };
  1202. struct __declspec(uuid("b79b2d7e-dbc8-11d3-9f60-00c04f6bdd7f"))
  1203. IGeometry2 : IGeometry
  1204. {
  1205.     //
  1206.     // Raw methods provided by interface
  1207.     //
  1208.     virtual HRESULT __stdcall ProjectEx (
  1209.         struct ISpatialReference * newReferenceSystem,
  1210.         enum esriTransformDirection direction,
  1211.         struct IGeoTransformation * GeoTransformation,
  1212.         VARIANT_BOOL bAngularDensify,
  1213.         double maxSegmentLength,
  1214.         double maxDeviation ) = 0;
  1215. };
  1216. struct __declspec(uuid("991f5c10-bc4c-11d0-8303-0000f8034032"))
  1217. ICircularArc : ICurve
  1218. {
  1219.     //
  1220.     // Raw methods provided by interface
  1221.     //
  1222.     virtual HRESULT __stdcall QueryCoords (
  1223.         struct IPoint * Center,
  1224.         struct IPoint * from,
  1225.         struct IPoint * to,
  1226.         VARIANT_BOOL * isCCW,
  1227.         VARIANT_BOOL * IsMinor ) = 0;
  1228.     virtual HRESULT __stdcall PutCoords (
  1229.         struct IPoint * Center,
  1230.         struct IPoint * from,
  1231.         struct IPoint * to,
  1232.         enum esriArcOrientation arcOrientation ) = 0;
  1233.     virtual HRESULT __stdcall QueryCoordsByAngle (
  1234.         struct IPoint * Center,
  1235.         double * FromAngle,
  1236.         double * centerAngle,
  1237.         double * arcRadius ) = 0;
  1238.     virtual HRESULT __stdcall PutCoordsByAngle (
  1239.         struct IPoint * cp,
  1240.         double FromAngle,
  1241.         double CentralAngle,
  1242.         double arcRadius ) = 0;
  1243.     virtual HRESULT __stdcall PutRadiusByPoint (
  1244.         struct IPoint * radialPoint ) = 0;
  1245.     virtual HRESULT __stdcall get_CenterPoint (
  1246.         struct IPoint * * outCenter ) = 0;
  1247.     virtual HRESULT __stdcall QueryCenterPoint (
  1248.         struct IPoint * Center ) = 0;
  1249.     virtual HRESULT __stdcall get_Radius (
  1250.         double * outRadius ) = 0;
  1251.     virtual HRESULT __stdcall put_Radius (
  1252.         double outRadius ) = 0;
  1253.     virtual HRESULT __stdcall get_FromAngle (
  1254.         double * outFromAngle ) = 0;
  1255.     virtual HRESULT __stdcall put_FromAngle (
  1256.         double outFromAngle ) = 0;
  1257.     virtual HRESULT __stdcall get_ToAngle (
  1258.         double * outToAngle ) = 0;
  1259.     virtual HRESULT __stdcall put_ToAngle (
  1260.         double outToAngle ) = 0;
  1261.     virtual HRESULT __stdcall get_CentralAngle (
  1262.         double * outCentalAngle ) = 0;
  1263.     virtual HRESULT __stdcall put_CentralAngle (
  1264.         double outCentalAngle ) = 0;
  1265.     virtual HRESULT __stdcall get_ChordHeight (
  1266.         double * ChordHeight ) = 0;
  1267.     virtual HRESULT __stdcall put_ChordHeight (
  1268.         double ChordHeight ) = 0;
  1269.     virtual HRESULT __stdcall get_IsLine (
  1270.         VARIANT_BOOL * IsLine ) = 0;
  1271.     virtual HRESULT __stdcall get_IsPoint (
  1272.         VARIANT_BOOL * IsPoint ) = 0;
  1273.     virtual HRESULT __stdcall get_IsCounterClockwise (
  1274.         VARIANT_BOOL * isCCW ) = 0;
  1275.     virtual HRESULT __stdcall put_IsCounterClockwise (
  1276.         VARIANT_BOOL isCCW ) = 0;
  1277.     virtual HRESULT __stdcall get_IsMinor (
  1278.         VARIANT_BOOL * IsMinor ) = 0;
  1279.     virtual HRESULT __stdcall put_IsMinor (
  1280.         VARIANT_BOOL IsMinor ) = 0;
  1281.     virtual HRESULT __stdcall Complement ( ) = 0;
  1282. };
  1283. struct __declspec(uuid("b5b8cda0-9d24-11d3-810d-0080c75e8a71"))
  1284. IGeometryBag : IGeometry
  1285. {
  1286.     //
  1287.     // Raw methods provided by interface
  1288.     //
  1289.     virtual HRESULT __stdcall get_LosslessExport (
  1290.         VARIANT_BOOL * nothingLost ) = 0;
  1291. };
  1292. struct __declspec(uuid("d12f81b4-d263-11d2-9f29-00c04f6bdd7f"))
  1293. IAffineTransformation2D : ITransformation
  1294. {
  1295.     //
  1296.     // Raw methods provided by interface
  1297.     //
  1298.     virtual HRESULT __stdcall putref_SpatialReference (
  1299.         struct ISpatialReference * SR ) = 0;
  1300.     virtual HRESULT __stdcall get_SpatialReference (
  1301.         struct ISpatialReference * * SR ) = 0;
  1302.     virtual HRESULT __stdcall Reset ( ) = 0;
  1303.     virtual HRESULT __stdcall DefineFromControlPointsEx (
  1304.         long numPoints,
  1305.         WKSPoint * fromPoints,
  1306.         WKSPoint * toPoints ) = 0;
  1307.     virtual HRESULT __stdcall DefineFromControlPoints (
  1308.         long numPoints,
  1309.         struct IPoint * * fromPoints,
  1310.         struct IPoint * * toPoints ) = 0;
  1311.     virtual HRESULT __stdcall DefineFromEnvelopes (
  1312.         struct IEnvelope * from,
  1313.         struct IEnvelope * to ) = 0;
  1314.     virtual HRESULT __stdcall DefineFromEnvelopesEx (
  1315.         struct IEnvelope * from,
  1316.         struct IEnvelope * to,
  1317.         struct IEnvelope * outFrom,
  1318.         VARIANT_BOOL assumeFalseOrigin,
  1319.         VARIANT_BOOL keepAspect,
  1320.         VARIANT_BOOL flipIt ) = 0;
  1321.     virtual HRESULT __stdcall DefineReflection (
  1322.         struct ILine * l ) = 0;
  1323.     virtual HRESULT __stdcall GetRMSError (
  1324.         double * fromError,
  1325.         double * toError ) = 0;
  1326.     virtual HRESULT __stdcall GetControlPointError (
  1327.         long i,
  1328.         double * fromError,
  1329.         double * toError ) = 0;
  1330.     virtual HRESULT __stdcall get_XScale (
  1331.         double * sx ) = 0;
  1332.     virtual HRESULT __stdcall get_YScale (
  1333.         double * sy ) = 0;
  1334.     virtual HRESULT __stdcall get_XTranslation (
  1335.         double * dx ) = 0;
  1336.     virtual HRESULT __stdcall get_YTranslation (
  1337.         double * dy ) = 0;
  1338.     virtual HRESULT __stdcall get_Rotation (
  1339.         double * r ) = 0;
  1340.     virtual HRESULT __stdcall Scale (
  1341.         double dx,
  1342.         double dy ) = 0;
  1343.     virtual HRESULT __stdcall put_MoveOrigin (
  1344.         struct IPoint * _arg1 ) = 0;
  1345.     virtual HRESULT __stdcall MoveVector (
  1346.         struct ILine * movementVector ) = 0;
  1347.     virtual HRESULT __stdcall Move (
  1348.         double dx,
  1349.         double dy ) = 0;
  1350.     virtual HRESULT __stdcall Rotate (
  1351.         double da ) = 0;
  1352.     virtual HRESULT __stdcall PostMultiply (
  1353.         struct IAffineTransformation2D * postTransform ) = 0;
  1354.     virtual HRESULT __stdcall PreMultiply (
  1355.         struct IAffineTransformation2D * preTransform ) = 0;
  1356.     virtual HRESULT __stdcall get_IsReflective (
  1357.         VARIANT_BOOL * IsReflective ) = 0;
  1358.     virtual HRESULT __stdcall Project (
  1359.         struct ISpatialReference * newSpatialReference ) = 0;
  1360. };
  1361. struct __declspec(uuid("c06e0427-90d2-11d3-9f5c-00c04f6bc5f4"))
  1362. ITransformation3D : IUnknown
  1363. {
  1364.     //
  1365.     // Raw methods provided by interface
  1366.     //
  1367.     virtual HRESULT __stdcall Reset ( ) = 0;
  1368.     virtual HRESULT __stdcall Translate (
  1369.         struct IVector3D * offsetVector ) = 0;
  1370.     virtual HRESULT __stdcall Scale (
  1371.         double sx,
  1372.         double sy,
  1373.         double sz ) = 0;
  1374.     virtual HRESULT __stdcall Rotate (
  1375.         double rotationAngle,
  1376.         struct IVector3D * rotationAxis ) = 0;
  1377.     virtual HRESULT __stdcall PostMultiply (
  1378.         struct ITransformation3D * postTransform ) = 0;
  1379.     virtual HRESULT __stdcall PreMultiply (
  1380.         struct ITransformation3D * preTransform ) = 0;
  1381.     virtual HRESULT __stdcall Transform (
  1382.         long numPoints,
  1383.         WKSPointZ * originalPoints,
  1384.         WKSPointZ * transformedPoints ) = 0;
  1385. };
  1386. struct __declspec(uuid("1b077911-38c5-11d0-92d2-00805f7c28b0"))
  1387. ITopologicalOperator : IUnknown
  1388. {
  1389.     //
  1390.     // Raw methods provided by interface
  1391.     //
  1392.     virtual HRESULT __stdcall get_IsSimple (
  1393.         VARIANT_BOOL * IsSimple ) = 0;
  1394.     virtual HRESULT __stdcall get_IsKnownSimple (
  1395.         VARIANT_BOOL * IsKnownSimple ) = 0;
  1396.     virtual HRESULT __stdcall Simplify ( ) = 0;
  1397.     virtual HRESULT __stdcall Buffer (
  1398.         double distance,
  1399.         struct IGeometry * * outBuffer ) = 0;
  1400.     virtual HRESULT __stdcall ConvexHull (
  1401.         struct IGeometry * * outHull ) = 0;
  1402.     virtual HRESULT __stdcall Intersect (
  1403.         struct IGeometry * other,
  1404.         enum esriGeometryDimension resultDimension,
  1405.         struct IGeometry * * intersection ) = 0;
  1406.     virtual HRESULT __stdcall Union (
  1407.         struct IGeometry * other,
  1408.         struct IGeometry * * resultGeom ) = 0;
  1409.     virtual HRESULT __stdcall ConstructUnion (
  1410.         struct IEnumGeometry * geometries ) = 0;
  1411.     virtual HRESULT __stdcall Difference (
  1412.         struct IGeometry * other,
  1413.         struct IGeometry * * resultGeom ) = 0;
  1414.     virtual HRESULT __stdcall SymmetricDifference (
  1415.         struct IGeometry * other,
  1416.         struct IGeometry * * resultGeom ) = 0;
  1417.     virtual HRESULT __stdcall Clip (
  1418.         struct IEnvelope * clipperEnvelope ) = 0;
  1419.     virtual HRESULT __stdcall QueryClipped (
  1420.         struct IEnvelope * clipperEnvelope,
  1421.         struct IGeometry * clippedGeometry ) = 0;
  1422.     virtual HRESULT __stdcall QueryClippedDense (
  1423.         struct IEnvelope * clipperEnvelope,
  1424.         double denseDistance,
  1425.         struct IGeometry * clippedGeometry ) = 0;
  1426.     virtual HRESULT __stdcall Cut (
  1427.         struct IPolyline * cutter,
  1428.         struct IGeometry * * leftGeom,
  1429.         struct IGeometry * * rightGeom ) = 0;
  1430.     virtual HRESULT __stdcall get_Boundary (
  1431.         struct IGeometry * * outBoundary ) = 0;
  1432.     virtual HRESULT __stdcall ClipDense (
  1433.         struct IEnvelope * clipperEnvelope,
  1434.         double denseDistance ) = 0;
  1435.     virtual HRESULT __stdcall get_TopologyCache (
  1436.         TopologyHandle * topologyCacheHandle ) = 0;
  1437. };
  1438. struct __declspec(uuid("805aeeb0-1d4c-11d4-9f75-00c04f6bdd7f"))
  1439. ITopologicalOperator2 : ITopologicalOperator
  1440. {
  1441.     //
  1442.     // Raw methods provided by interface
  1443.     //
  1444.     virtual HRESULT __stdcall ConstructBuffers (
  1445.         long numBuffers,
  1446.         double * distances,
  1447.         struct IEnumGeometry * * buffers ) = 0;
  1448.     virtual HRESULT __stdcall ClipToDomain ( ) = 0;
  1449.     virtual HRESULT __stdcall put_IsKnownSimple (
  1450.         VARIANT_BOOL _arg1 ) = 0;
  1451.     virtual HRESULT __stdcall IntersectMultidimension (
  1452.         struct IGeometry * other,
  1453.         struct IGeometry * * intersection ) = 0;
  1454. };
  1455. enum esriGeometryHitPartType
  1456. {
  1457.     esriGeometryPartNone = 0,
  1458.     esriGeometryPartVertex = 1,
  1459.     esriGeometryPartBoundary = 4,
  1460.     esriGeometryPartMidpoint = 8,
  1461.     esriGeometryPartCentroid = 32,
  1462.     esriGeometryPartEndpoint = 16
  1463. };
  1464. enum esriSegmentType
  1465. {
  1466.     esriSegmentArc = 1,
  1467.     esriSegmentLine = 2,
  1468.     esriSegmentSpiral = 3,
  1469.     esriSegmentBezier3Curve = 4,
  1470.     esriSegmentEllipticArc = 5
  1471. };
  1472. enum esriMonotinicityEnum
  1473. {
  1474.     esriValueIncreases = 1,
  1475.     esriValueLevel = 2,
  1476.     esriValueDecreases = 4,
  1477.     esriValuesEmpty = 8
  1478. };
  1479. enum esriShapeExportFlags
  1480. {
  1481.     esriShapeExportDefaults = 0,
  1482.     esriShapeExportNoSwap = 1,
  1483.     esriShapeExportAngularDensify = 2,
  1484.     esriShapeExportDistanceDensify = 4,
  1485.     esriShapeExportTrueNaNs = 8,
  1486.     esriShapeExportStripZs = 16,
  1487.     esriShapeExportStripMs = 32,
  1488.     esriShapeExportStripIDs = 64,
  1489.     esriShapeExportStripTextures = 128,
  1490.     esriShapeExportStripNormals = 256,
  1491.     esriShapeExportStripMaterials = 512
  1492. };
  1493. enum esriShapeImportFlags
  1494. {
  1495.     esriShapeImportDefaults = 0,
  1496.     esriShapeImportNoSwap = 1,
  1497.     esriShapeImportNonTrusted = 2,
  1498.     esriShapeImportAttach = 4
  1499. };
  1500. enum wkbGeometryType
  1501. {
  1502.     wkbPoint = 1,
  1503.     wkbLinestring = 2,
  1504.     wkbPolygon = 3,
  1505.     wkbMultiPoint = 4,
  1506.     wkbMultiLinestring = 5,
  1507.     wkbMultiPolygon = 6,
  1508.     wkbGeometryCollection = 7,
  1509.     wkbMultiPatch = 8
  1510. };
  1511. enum esriGeometryEmbeddingDimension
  1512. {
  1513.     esriGeometry2DEmbeddingDimension = 1,
  1514.     esriGeometry3DEmbeddingDimension = 2
  1515. };
  1516. enum esriEnvelopeVertex
  1517. {
  1518.     esriEnvelopeVertexLL = 0,
  1519.     esriEnvelopeVertexUL = 1,
  1520.     esriEnvelopeVertexUR = 2,
  1521.     esriEnvelopeVertexLR = 3
  1522. };
  1523. enum esriPatchType
  1524. {
  1525.     esriPatchTypeTriangleStrip = 0,
  1526.     esriPatchTypeTriangleFan = 1,
  1527.     esriPatchTypeOuterRing = 2,
  1528.     esriPatchTypeInnerRing = 3,
  1529.     esriPatchTypeFirstRing = 4,
  1530.     esriPatchTypeRing = 5,
  1531.     esriPatchTypeTriangles = 6
  1532. };
  1533. enum esriCurveExtension
  1534. {
  1535.     esriDefaultCurveExtension = 0,
  1536.     esriRelocateEnds = 1,
  1537.     esriKeepEndAttributes = 2,
  1538.     esriNoEndAttributes = 4,
  1539.     esriNoExtendAtFrom = 8,
  1540.     esriNoExtendAtTo = 16
  1541. };
  1542. enum esriGeometryUpdateMEnum
  1543. {
  1544.     esriGeometryInterpolate = 1,
  1545.     esriGeometryExtrapolateBefore = 2,
  1546.     esriGeometryExtrapolateAfter = 4
  1547. };
  1548. enum esriExtrapolationEnum
  1549. {
  1550.     esriExtrapolateBefore = -1,
  1551.     esriExtrapolateBoth = 0,
  1552.     esriExtrapolateAfter = 1
  1553. };
  1554. enum esriMCurveRelationEnum
  1555. {
  1556.     esriMRelationUndetermined = 0,
  1557.     esriMBetweenMinMax = 1,
  1558.     esriMBelowMin = 2,
  1559.     esriMAboveMax = 3,
  1560.     esriMRelationCurveEmpty = 16,
  1561.     esriMRelationCurveHasNoMs = 32,
  1562.     esriMRelationMIsNaN = 48,
  1563.     esriMRelationBasicMask = 3,
  1564.     esriMRelationUndeterminedDetailsMask = 48
  1565. };
  1566. enum esriTurnDirectionEnum
  1567. {
  1568.     esriNoTurn = 1,
  1569.     esriUTurn = 2,
  1570.     esriLeftTurn = 4,
  1571.     esriRightTurn = 8
  1572. };
  1573. enum esriGeometryError
  1574. {
  1575.     S_GEOMETRY_OK = 0,
  1576.     S_GEOMETRY_DEGENERATE = 513,
  1577.     S_GEOMETRY_HAS_NL_SEGMENTS = 563,
  1578.     S_GEOMETRY_DATUMCONVERSIONATTEMPTED = 583,
  1579.     S_GEOMETRY_EMPTY_GEOMETRY = 584,
  1580.     S_GEOMETRY_GEOMETRY_NOT_PROJECTED = 596,
  1581.     E_GEOMETRY_EMPTYGEOMETRY = 514,
  1582.     E_GEOMETRY_INCONSISTANT_PARAMS = 515,
  1583.     E_GEOMETRY_INVALID_RADIUS = 516,
  1584.     E_GEOMETRY_INVALID_CHORD = 517,
  1585.     E_GEOMETRY_NONENVELOPE = 518,
  1586.     E_GEOMETRY_NONPART = 519,
  1587.     E_GEOMETRY_ROTATEENVELOPE = 520,
  1588.     E_GEOMETRY_TRANSFORMENVELOPE = 521,
  1589.     E_GEOMETRY_WRONGTYPE = 522,
  1590.     E_GEOMETRY_UNKNOWNTYPE = 523,
  1591.     E_GEOMETRY_UNDERCONSTRAINED = 524,
  1592.     E_GEOMETRY_INVALID_ANGLE = 525,
  1593.     E_GEOMETRY_NONPATH = 526,
  1594.     E_GEOMETRY_NONSEGMENT = 527,
  1595.     E_GEOMETRY_NONPOINT = 528,
  1596.     E_GEOMETRY_INCONSISTANT_SPATIAL_REFERENCE = 533,
  1597.     E_GEOMETRY_PARTNOTFOUND = 535,
  1598.     E_GEOMETRY_NOTSIMPLE = 536,
  1599.     E_GEOMETRY_INTERIORPART = 537,
  1600.     E_GEOMETRY_BAD_SPLIT_DISTANCE = 540,
  1601.     E_GEOMETRY_NULL = 541,
  1602.     E_GEOMETRY_CANT_RESHAPE = 542,
  1603.     E_GEOMETRY_NONPOLYGON = 543,
  1604.     E_GEOMETRY_NONPOLYLINE = 544,
  1605.     E_GEOMETRY_NONGEOMETRY = 545,
  1606.     E_GEOMETRY_EQUAL_VERTEX_ATTRIBUTES = 547,
  1607.     E_GEOMETRY_CANT_QUERY_ON_VERTEX_ATTRIBUTES = 549,
  1608.     E_GEOMETRY_NO_VALID_VERTEX_ATTRIBUTES = 550,
  1609.     E_GEOMETRY_UNDEFINED_SPATIAL_REFERENCE = 551,
  1610.     E_GEOMETRY_INCONSISTANT_DIMENSIONS = 553,
  1611.     E_GEOMETRY_SIMPLIFYFAILED = 556,
  1612.     E_GEOMETRY_PROJECTDATUM = 558,
  1613.     E_GEOMETRY_FILLET_FAILED = 559,
  1614.     E_GEOMETRY_INVALID_AXES = 560,
  1615.     E_GEOMETRY_CANT_CUT_POLYGON = 561,
  1616.     E_GEOMETRY_BADRELATION = 562,
  1617.     E_GEOMETRY_NOT_Z_AWARE = 564,
  1618.     E_GEOMETRY_NOT_M_AWARE = 565,
  1619.     E_GEOMETRY_SEGMENTGRAPH_CANTLOAD = 566,
  1620.     E_GEOMETRY_SEGMENTGRAPH_CONSTRUCTERROR = 567,
  1621.     E_GEOMETRY_OUT_OF_BOUNDS = 568,
  1622.     E_GEOMETRY_INTERNALERROR = 569,
  1623.     E_GEOMETRY_TOOMANYPOINTS = 570,
  1624.     E_GEOMETRY_BUFFEROUTOFBOUNDS = 571,
  1625.     E_GEOMETRY_OUTOFMEMORY = 572,
  1626.     E_GEOMETRY_RELATIONSYNTAXERROR = 573,
  1627.     E_GEOMETRY_UNKNOWNERROR = 574,
  1628.     E_GEOMETRY_NOPENDINGMOVETO = 575,
  1629.     E_GEOMETRY_NOT_ID_AWARE = 576,
  1630.     E_GEOMETRY_ILLEGALWIN32EXPORT = 577,
  1631.     E_GEOMETRY_CONSTRUCTPOINTUNION = 578,
  1632.     E_GEOMETRY_BEZIER_EXTEND_EMBEDDED = 579,
  1633.     E_GEOMETRY_NOT_Z_SIMPLE = 580,
  1634.     E_GEOMETRY_NOT_M_SIMPLE = 581,
  1635.     E_GEOMETRY_INVALIDCONSTRUCTION = 582,
  1636.     E_GEOMETRY_NONMULTIPATCH = 585,
  1637.     E_GEOMETRY_UNDEFINEDRING = 586,
  1638.     E_GEOMETRY_INVALIDRINGTYPE = 587,
  1639.     E_GEOMETRY_AMBIGUOUSPARTTYPE = 588,
  1640.     E_GEOMETRY_INVALIDRINGORDER = 589,
  1641.     E_GEOMETRY_INVALIDCOUNT = 590,
  1642.     E_GEOMETRY_EXTERIORPART = 591,
  1643.     E_GEOMETRY_NONTRIANGLESTRIP = 592,
  1644.     E_GEOMETRY_NONTRIANGLEFAN = 593,
  1645.     E_GEOMETRY_NONVECTOR3D = 594,
  1646.     E_GEOMETRY_DEGENERATEGEOMETRY = 595,
  1647.     E_GEOMETRY_DUPLICATESEGMENTPOINTER = 597,
  1648.     E_GEOMETRY_INSUFFICIENT_CONTROLPOINTS = 598,
  1649.     E_GEOMETRY_NOT_BEZIERCURVES = 599,
  1650.     E_GEOMETRY_TRANSFORMATION_UNDEFINED = 600
  1651. };
  1652. struct __declspec(uuid("e91ae5c7-2c16-11d4-80e2-00c04fa0adf8"))
  1653. IFunctionalSurface2 : IFunctionalSurface
  1654. {
  1655.     //
  1656.     // Raw methods provided by interface
  1657.     //
  1658.     virtual HRESULT __stdcall put_Domain (
  1659.         struct IPolygon * _arg1 ) = 0;
  1660. };
  1661. struct __declspec(uuid("ad6492fa-8902-4d83-acd1-418f476b306f"))
  1662. IEnvelopeGEN : IUnknown
  1663. {
  1664.     //
  1665.     // Raw methods provided by interface
  1666.     //
  1667.     virtual HRESULT __stdcall DefineFromWKSPoints (
  1668.         SAFEARRAY * * wksPoints ) = 0;
  1669.     virtual HRESULT __stdcall DefineFromPoints (
  1670.         SAFEARRAY * * Points ) = 0;
  1671.     virtual HRESULT __stdcall get_Width (
  1672.         double * Width ) = 0;
  1673.     virtual HRESULT __stdcall put_Width (
  1674.         double Width ) = 0;
  1675.     virtual HRESULT __stdcall get_Height (
  1676.         double * Height ) = 0;
  1677.     virtual HRESULT __stdcall put_Depth (
  1678.         double Depth ) = 0;
  1679.     virtual HRESULT __stdcall get_Depth (
  1680.         double * Depth ) = 0;
  1681.     virtual HRESULT __stdcall put_Height (
  1682.         double Height ) = 0;
  1683.     virtual HRESULT __stdcall get_LowerLeft (
  1684.         struct IPoint * * LowerLeft ) = 0;
  1685.     virtual HRESULT __stdcall put_LowerLeft (
  1686.         struct IPoint * LowerLeft ) = 0;
  1687.     virtual HRESULT __stdcall get_UpperLeft (
  1688.         struct IPoint * * UpperLeft ) = 0;
  1689.     virtual HRESULT __stdcall put_UpperLeft (
  1690.         struct IPoint * UpperLeft ) = 0;
  1691.     virtual HRESULT __stdcall get_UpperRight (
  1692.         struct IPoint * * UpperRight ) = 0;
  1693.     virtual HRESULT __stdcall put_UpperRight (
  1694.         struct IPoint * UpperRight ) = 0;
  1695.     virtual HRESULT __stdcall get_LowerRight (
  1696.         struct IPoint * * LowerRight ) = 0;
  1697.     virtual HRESULT __stdcall put_LowerRight (
  1698.         struct IPoint * LowerRight ) = 0;
  1699.     virtual HRESULT __stdcall get_XMin (
  1700.         double * XMin ) = 0;
  1701.     virtual HRESULT __stdcall put_XMin (
  1702.         double XMin ) = 0;
  1703.     virtual HRESULT __stdcall get_YMin (
  1704.         double * YMin ) = 0;
  1705.     virtual HRESULT __stdcall put_YMin (
  1706.         double YMin ) = 0;
  1707.     virtual HRESULT __stdcall get_XMax (
  1708.         double * XMax ) = 0;
  1709.     virtual HRESULT __stdcall put_XMax (
  1710.         double XMax ) = 0;
  1711.     virtual HRESULT __stdcall get_YMax (
  1712.         double * YMax ) = 0;
  1713.     virtual HRESULT __stdcall put_YMax (
  1714.         double YMax ) = 0;
  1715.     virtual HRESULT __stdcall get_MMin (
  1716.         double * MMin ) = 0;
  1717.     virtual HRESULT __stdcall put_MMin (
  1718.         double MMin ) = 0;
  1719.     virtual HRESULT __stdcall get_MMax (
  1720.         double * MMax ) = 0;
  1721.     virtual HRESULT __stdcall put_MMax (
  1722.         double MMax ) = 0;
  1723.     virtual HRESULT __stdcall get_ZMin (
  1724.         double * ZMin ) = 0;
  1725.     virtual HRESULT __stdcall put_ZMin (
  1726.         double ZMin ) = 0;
  1727.     virtual HRESULT __stdcall get_ZMax (
  1728.         double * ZMax ) = 0;
  1729.     virtual HRESULT __stdcall put_ZMax (
  1730.         double ZMax ) = 0;
  1731.     virtual HRESULT __stdcall Union (
  1732.         struct IEnvelope * inEnvelope ) = 0;
  1733.     virtual HRESULT __stdcall Intersect (
  1734.         struct IEnvelope * inEnvelope ) = 0;
  1735.     virtual HRESULT __stdcall Offset (
  1736.         double X,
  1737.         double Y ) = 0;
  1738.     virtual HRESULT __stdcall OffsetZ (
  1739.         double Z ) = 0;
  1740.     virtual HRESULT __stdcall OffsetM (
  1741.         double M ) = 0;
  1742.     virtual HRESULT __stdcall Expand (
  1743.         double dx,
  1744.         double dy,
  1745.         VARIANT_BOOL asRatio ) = 0;
  1746.     virtual HRESULT __stdcall ExpandZ (
  1747.         double dz,
  1748.         VARIANT_BOOL asRatio ) = 0;
  1749.     virtual HRESULT __stdcall ExpandM (
  1750.         double dm,
  1751.         VARIANT_BOOL asRatio ) = 0;
  1752.     virtual HRESULT __stdcall QueryWKSCoords (
  1753.         WKSEnvelope * e ) = 0;
  1754.     virtual HRESULT __stdcall PutWKSCoords (
  1755.         WKSEnvelope * e ) = 0;
  1756.     virtual HRESULT __stdcall PutCoords (
  1757.         double XMin,
  1758.         double YMin,
  1759.         double XMax,
  1760.         double YMax ) = 0;
  1761.     virtual HRESULT __stdcall QueryCoords (
  1762.         double * XMin,
  1763.         double * YMin,
  1764.         double * XMax,
  1765.         double * YMax ) = 0;
  1766.     virtual HRESULT __stdcall CenterAt (
  1767.         struct IPoint * p ) = 0;
  1768.     virtual HRESULT __stdcall get_MinMaxAttributes (
  1769.         esriPointAttributes * * MinMaxAttributes ) = 0;
  1770.     virtual HRESULT __stdcall put_MinMaxAttributes (
  1771.         esriPointAttributes * MinMaxAttributes ) = 0;
  1772. };
  1773. struct __declspec(uuid("64de4fd4-6e85-41ef-8401-8bde5e7beaab"))
  1774. IBezierCurveGEN : IUnknown
  1775. {
  1776.     //
  1777.     // Raw methods provided by interface
  1778.     //
  1779.     virtual HRESULT __stdcall QueryCoords (
  1780.         SAFEARRAY * * controlPoints ) = 0;
  1781.     virtual HRESULT __stdcall PutCoords (
  1782.         SAFEARRAY * * controlPoints ) = 0;
  1783.     virtual HRESULT __stdcall QueryCoord (
  1784.         long Index,
  1785.         struct IPoint * controlPoint ) = 0;
  1786.     virtual HRESULT __stdcall PutCoord (
  1787.         long Index,
  1788.         struct IPoint * controlPoint ) = 0;
  1789.     virtual HRESULT __stdcall get_Degree (
  1790.         long * Degree ) = 0;
  1791.     virtual HRESULT __stdcall QueryChordLengthTangentAtFrom (
  1792.         struct IPoint * tangent,
  1793.         VARIANT_BOOL * setByUser ) = 0;
  1794.     virtual HRESULT __stdcall QueryChordLengthTangentAtTo (
  1795.         struct IPoint * tangent,
  1796.         VARIANT_BOOL * setByUser ) = 0;
  1797.     virtual HRESULT __stdcall SetChordLengthTangentAtFrom (
  1798.         struct IPoint * tangent,
  1799.         VARIANT_BOOL setByUser ) = 0;
  1800.     virtual HRESULT __stdcall SetChordLengthTangentAtTo (
  1801.         struct IPoint * tangent,
  1802.         VARIANT_BOOL setByUser ) = 0;
  1803.     virtual HRESULT __stdcall QueryInflectionPoint (
  1804.         struct IPoint * inflectionPoint ) = 0;
  1805. };
  1806. struct __declspec(uuid("d034f81b-7137-40a6-90ea-d88968c33e60"))
  1807. IGeometry3 : IGeometry2
  1808. {
  1809.     //
  1810.     // Raw methods provided by interface
  1811.     //
  1812.     virtual HRESULT __stdcall QueryWKSEnvelope (
  1813.         WKSEnvelope * e ) = 0;
  1814. };
  1815. struct __declspec(uuid("c4c70b7a-dfba-4892-86cd-a9100357409b"))
  1816. IGeometry4 : IGeometry3
  1817. {
  1818.     //
  1819.     // Raw methods provided by interface
  1820.     //
  1821.     virtual HRESULT __stdcall get_Changed (
  1822.         VARIANT_BOOL * isChanged ) = 0;
  1823.     virtual HRESULT __stdcall put_Changed (
  1824.         VARIANT_BOOL isChanged ) = 0;
  1825. };
  1826. struct __declspec(uuid("3732f8b2-0f64-11d5-9fde-00c04f6bdd7f"))
  1827. IMSnap : IUnknown
  1828. {
  1829.     //
  1830.     // Raw methods provided by interface
  1831.     //
  1832.     virtual HRESULT __stdcall Snap ( ) = 0;
  1833. };
  1834. struct __declspec(uuid("1b9fa97e-66c8-477c-88c2-e87a96b56239"))
  1835. ITransformation3DGEN : IUnknown
  1836. {
  1837.     //
  1838.     // Raw methods provided by interface
  1839.     //
  1840.     virtual HRESULT __stdcall Reset ( ) = 0;
  1841.     virtual HRESULT __stdcall Translate (
  1842.         struct IVector3D * offsetVector ) = 0;
  1843.     virtual HRESULT __stdcall Scale (
  1844.         double sx,
  1845.         double sy,
  1846.         double sz ) = 0;
  1847.     virtual HRESULT __stdcall Rotate (
  1848.         double rotationAngle,
  1849.         struct IVector3D * rotationAxis ) = 0;
  1850.     virtual HRESULT __stdcall PostMultiply (
  1851.         struct ITransformation3D * postTransform ) = 0;
  1852.     virtual HRESULT __stdcall PreMultiply (
  1853.         struct ITransformation3D * preTransform ) = 0;
  1854.     virtual HRESULT __stdcall Transform (
  1855.         SAFEARRAY * * originalPoints,
  1856.         SAFEARRAY * * transformedPoints ) = 0;
  1857. };
  1858. struct __declspec(uuid("20f586de-9b4b-47a2-a9a7-abc70ffd6e56"))
  1859. IAffineTransformation2D3GEN : IUnknown
  1860. {
  1861.     //
  1862.     // Raw methods provided by interface
  1863.     //
  1864.     virtual HRESULT __stdcall TransformMeasuresFF (
  1865.         enum esriTransformDirection direction,
  1866.         SAFEARRAY * * inMeasures,
  1867.         SAFEARRAY * * outMeasures ) = 0;
  1868.     virtual HRESULT __stdcall TransformMeasuresFI (
  1869.         enum esriTransformDirection direction,
  1870.         SAFEARRAY * * inMeasures,
  1871.         SAFEARRAY * * outMeasures ) = 0;
  1872.     virtual HRESULT __stdcall TransformMeasuresIF (
  1873.         enum esriTransformDirection direction,
  1874.         SAFEARRAY * * inMeasures,
  1875.         SAFEARRAY * * outMeasures ) = 0;
  1876.     virtual HRESULT __stdcall TransformMeasuresII (
  1877.         enum esriTransformDirection direction,
  1878.         SAFEARRAY * * inMeasures,
  1879.         SAFEARRAY * * outMeasures ) = 0;
  1880.     virtual HRESULT __stdcall TransformPointsFF (
  1881.         enum esriTransformDirection direction,
  1882.         SAFEARRAY * * inPoints,
  1883.         SAFEARRAY * * outPoints ) = 0;
  1884.     virtual HRESULT __stdcall TransformPointsFI (
  1885.         enum esriTransformDirection direction,
  1886.         SAFEARRAY * * inPoints,
  1887.         SAFEARRAY * * outPoints ) = 0;
  1888.     virtual HRESULT __stdcall TransformPointsIF (
  1889.         enum esriTransformDirection direction,
  1890.         SAFEARRAY * * inPoints,
  1891.         SAFEARRAY * * outPoints ) = 0;
  1892.     virtual HRESULT __stdcall TransformPointsII (
  1893.         enum esriTransformDirection direction,
  1894.         SAFEARRAY * * inPoints,
  1895.         SAFEARRAY * * outPoints ) = 0;
  1896.     virtual HRESULT __stdcall putref_SpatialReference (
  1897.         struct ISpatialReference * SR ) = 0;
  1898.     virtual HRESULT __stdcall get_SpatialReference (
  1899.         struct ISpatialReference * * SR ) = 0;
  1900.     virtual HRESULT __stdcall Reset ( ) = 0;
  1901.     virtual HRESULT __stdcall DefineFromControlPoints (
  1902.         SAFEARRAY * * fromPoints,
  1903.         SAFEARRAY * * toPoints ) = 0;
  1904.     virtual HRESULT __stdcall DefineFromEnvelopes (
  1905.         struct IEnvelope * from,
  1906.         struct IEnvelope * to ) = 0;
  1907.     virtual HRESULT __stdcall DefineFromEnvelopesEx (
  1908.         struct IEnvelope * from,
  1909.         struct IEnvelope * to,
  1910.         struct IEnvelope * outFrom,
  1911.         VARIANT_BOOL assumeFalseOrigin,
  1912.         VARIANT_BOOL keepAspect,
  1913.         VARIANT_BOOL flipIt ) = 0;
  1914.     virtual HRESULT __stdcall DefineReflection (
  1915.         struct ILine * l ) = 0;
  1916.     virtual HRESULT __stdcall GetRMSError (
  1917.         double * fromError,
  1918.         double * toError ) = 0;
  1919.     virtual HRESULT __stdcall GetControlPointError (
  1920.         long i,
  1921.         double * fromError,
  1922.         double * toError ) = 0;
  1923.     virtual HRESULT __stdcall get_XScale (
  1924.         double * sx ) = 0;
  1925.     virtual HRESULT __stdcall get_YScale (
  1926.         double * sy ) = 0;
  1927.     virtual HRESULT __stdcall get_XTranslation (
  1928.         double * dx ) = 0;
  1929.     virtual HRESULT __stdcall get_YTranslation (
  1930.         double * dy ) = 0;
  1931.     virtual HRESULT __stdcall get_Rotation (
  1932.         double * r ) = 0;
  1933.     virtual HRESULT __stdcall Scale (
  1934.         double dx,
  1935.         double dy ) = 0;
  1936.     virtual HRESULT __stdcall put_MoveOrigin (
  1937.         struct IPoint * Origin ) = 0;
  1938.     virtual HRESULT __stdcall MoveVector (
  1939.         struct ILine * movementVector ) = 0;
  1940.     virtual HRESULT __stdcall Move (
  1941.         double dx,
  1942.         double dy ) = 0;
  1943.     virtual HRESULT __stdcall Rotate (
  1944.         double da ) = 0;
  1945.     virtual HRESULT __stdcall PostMultiply (
  1946.         struct IAffineTransformation2D3GEN * postTransform ) = 0;
  1947.     virtual HRESULT __stdcall PreMultiply (
  1948.         struct IAffineTransformation2D3GEN * preTransform ) = 0;
  1949.     virtual HRESULT __stdcall get_IsReflective (
  1950.         VARIANT_BOOL * IsReflective ) = 0;
  1951.     virtual HRESULT __stdcall Project (
  1952.         struct ISpatialReference * newSpatialReference ) = 0;
  1953.     virtual HRESULT __stdcall get_MoveOrigin (
  1954.         struct IPoint * * Origin ) = 0;
  1955.     virtual HRESULT __stdcall DefineConformalFromControlPoints (
  1956.         SAFEARRAY * * fromPoints,
  1957.         SAFEARRAY * * toPoints ) = 0;
  1958.     virtual HRESULT __stdcall QueryLinearCoefficients (
  1959.         enum esriTransformDirection direction,
  1960.         SAFEARRAY * * params ) = 0;
  1961.     virtual HRESULT __stdcall SetLinearCoefficients (
  1962.         enum esriTransformDirection direction,
  1963.         SAFEARRAY * * params ) = 0;
  1964. };
  1965. struct __declspec(uuid("d1f0124f-a469-4653-a360-d29bc023722d"))
  1966. IAffineTransformation3DGEN : IUnknown
  1967. {
  1968.     //
  1969.     // Raw methods provided by interface
  1970.     //
  1971.     virtual HRESULT __stdcall TransformMeasuresFF (
  1972.         enum esriTransformDirection direction,
  1973.         SAFEARRAY * * inMeasures,
  1974.         SAFEARRAY * * outMeasures ) = 0;
  1975.     virtual HRESULT __stdcall TransformMeasuresFI (
  1976.         enum esriTransformDirection direction,
  1977.         SAFEARRAY * * inMeasures,
  1978.         SAFEARRAY * * outMeasures ) = 0;
  1979.     virtual HRESULT __stdcall TransformMeasuresIF (
  1980.         enum esriTransformDirection direction,
  1981.         SAFEARRAY * * inMeasures,
  1982.         SAFEARRAY * * outMeasures ) = 0;
  1983.     virtual HRESULT __stdcall TransformMeasuresII (
  1984.         enum esriTransformDirection direction,
  1985.         SAFEARRAY * * inMeasures,
  1986.         SAFEARRAY * * outMeasures ) = 0;
  1987.     virtual HRESULT __stdcall TransformPointsFF (
  1988.         enum esriTransformDirection direction,
  1989.         SAFEARRAY * * inPoints,
  1990.         SAFEARRAY * * outPoints ) = 0;
  1991.     virtual HRESULT __stdcall TransformPointsFI (
  1992.         enum esriTransformDirection direction,
  1993.         SAFEARRAY * * inPoints,
  1994.         SAFEARRAY * * outPoints ) = 0;
  1995.     virtual HRESULT __stdcall TransformPointsIF (
  1996.         enum esriTransformDirection direction,
  1997.         SAFEARRAY * * inPoints,
  1998.         SAFEARRAY * * outPoints ) = 0;
  1999.     virtual HRESULT __stdcall TransformPointsII (
  2000.         enum esriTransformDirection direction,
  2001.         SAFEARRAY * * inPoints,
  2002.         SAFEARRAY * * outPoints ) = 0;
  2003.     virtual HRESULT __stdcall DefineFromControlPoints (
  2004.         SAFEARRAY * * fromPoints,
  2005.         SAFEARRAY * * toPoints ) = 0;
  2006.     virtual HRESULT __stdcall GetRMSError (
  2007.         double * fromError,
  2008.         double * toError ) = 0;
  2009.     virtual HRESULT __stdcall GetControlPointError (
  2010.         long i,
  2011.         double * fromError,
  2012.         double * toError ) = 0;
  2013. };
  2014. struct __declspec(uuid("c7a467a9-0374-4f1a-9cbd-7156fe7dacb9"))
  2015. IProjectiveTransformation2DGEN : IUnknown
  2016. {
  2017.     //
  2018.     // Raw methods provided by interface
  2019.     //
  2020.     virtual HRESULT __stdcall TransformMeasuresFF (
  2021.         enum esriTransformDirection direction,
  2022.         SAFEARRAY * * inMeasures,
  2023.         SAFEARRAY * * outMeasures ) = 0;
  2024.     virtual HRESULT __stdcall TransformMeasuresFI (
  2025.         enum esriTransformDirection direction,
  2026.         SAFEARRAY * * inMeasures,
  2027.         SAFEARRAY * * outMeasures ) = 0;
  2028.     virtual HRESULT __stdcall TransformMeasuresIF (
  2029.         enum esriTransformDirection direction,
  2030.         SAFEARRAY * * inMeasures,
  2031.         SAFEARRAY * * outMeasures ) = 0;
  2032.     virtual HRESULT __stdcall TransformMeasuresII (
  2033.         enum esriTransformDirection direction,
  2034.         SAFEARRAY * * inMeasures,
  2035.         SAFEARRAY * * outMeasures ) = 0;
  2036.     virtual HRESULT __stdcall TransformPointsFF (
  2037.         enum esriTransformDirection direction,
  2038.         SAFEARRAY * * inPoints,
  2039.         SAFEARRAY * * outPoints ) = 0;
  2040.     virtual HRESULT __stdcall TransformPointsFI (
  2041.         enum esriTransformDirection direction,
  2042.         SAFEARRAY * * inPoints,
  2043.         SAFEARRAY * * outPoints ) = 0;
  2044.     virtual HRESULT __stdcall TransformPointsIF (
  2045.         enum esriTransformDirection direction,
  2046.         SAFEARRAY * * inPoints,
  2047.         SAFEARRAY * * outPoints ) = 0;
  2048.     virtual HRESULT __stdcall TransformPointsII (
  2049.         enum esriTransformDirection direction,
  2050.         SAFEARRAY * * inPoints,
  2051.         SAFEARRAY * * outPoints ) = 0;
  2052.     virtual HRESULT __stdcall putref_SpatialReference (
  2053.         struct ISpatialReference * SR ) = 0;
  2054.     virtual HRESULT __stdcall get_SpatialReference (
  2055.         struct ISpatialReference * * SR ) = 0;
  2056.     virtual HRESULT __stdcall Reset ( ) = 0;
  2057.     virtual HRESULT __stdcall DefineFromControlPoints (
  2058.         SAFEARRAY * * fromPoints,
  2059.         SAFEARRAY * * toPoints ) = 0;
  2060.     virtual HRESULT __stdcall GetRMSError (
  2061.         double * fromError,
  2062.         double * toError ) = 0;
  2063.     virtual HRESULT __stdcall GetControlPointError (
  2064.         long i,
  2065.         double * fromError,
  2066.         double * toError ) = 0;
  2067.     virtual HRESULT __stdcall Project (
  2068.         struct ISpatialReference * newSpatialReference ) = 0;
  2069.     virtual HRESULT __stdcall QueryTransformationParameters (
  2070.         enum esriTransformDirection direction,
  2071.         SAFEARRAY * * params ) = 0;
  2072.     virtual HRESULT __stdcall SetTransformationParameters (
  2073.         enum esriTransformDirection direction,
  2074.         SAFEARRAY * * params ) = 0;
  2075. };
  2076. struct __declspec(uuid("0cd38cb9-1c89-11d4-9f5c-00c04f6bdf0d"))
  2077. ISphere : IGeometry
  2078. {
  2079.     //
  2080.     // Raw methods provided by interface
  2081.     //
  2082.     virtual HRESULT __stdcall QueryCenter (
  2083.         struct IPoint * CenterPoint ) = 0;
  2084.     virtual HRESULT __stdcall get_Center (
  2085.         struct IPoint * * CenterPoint ) = 0;
  2086.     virtual HRESULT __stdcall put_Center (
  2087.         struct IPoint * CenterPoint ) = 0;
  2088.     virtual HRESULT __stdcall get_Radius (
  2089.         double * radiusLength ) = 0;
  2090.     virtual HRESULT __stdcall put_Radius (
  2091.         double radiusLength ) = 0;
  2092. };
  2093. struct __declspec(uuid("0cd38cba-1c89-11d4-9f5c-00c04f6bdf0d"))
  2094. IRay : IGeometry
  2095. {
  2096.     //
  2097.     // Raw methods provided by interface
  2098.     //
  2099.     virtual HRESULT __stdcall QueryOrigin (
  2100.         struct IPoint * vectorOrigin ) = 0;
  2101.     virtual HRESULT __stdcall get_Origin (
  2102.         struct IPoint * * vectorOrigin ) = 0;
  2103.     virtual HRESULT __stdcall put_Origin (
  2104.         struct IPoint * vectorOrigin ) = 0;
  2105.     virtual HRESULT __stdcall QueryVector (
  2106.         struct IVector3D * directionVector ) = 0;
  2107.     virtual HRESULT __stdcall get_Vector (
  2108.         struct IVector3D * * directionVector ) = 0;
  2109.     virtual HRESULT __stdcall put_Vector (
  2110.         struct IVector3D * directionVector ) = 0;
  2111.     virtual HRESULT __stdcall QueryPointAtDistance (
  2112.         double distance,
  2113.         struct IPoint * Point ) = 0;
  2114.     virtual HRESULT __stdcall GetPointAtDistance (
  2115.         double distance,
  2116.         struct IPoint * * Point ) = 0;
  2117.     virtual HRESULT __stdcall Intersects (
  2118.         struct IGeometry * targetGeometry,
  2119.         VARIANT_BOOL * intersectsTarget ) = 0;
  2120.     virtual HRESULT __stdcall QueryFirstIntersection (
  2121.         struct IGeometry * targetGeometry,
  2122.         struct IPoint * intersectionPoint ) = 0;
  2123.     virtual HRESULT __stdcall Intersect (
  2124.         struct IGeometry * targetGeometry,
  2125.         struct IPointCollection * intersectionPoints ) = 0;
  2126.     virtual HRESULT __stdcall GetEnumIntersect (
  2127.         struct IGeometry * targetGeometry,
  2128.         struct IEnumIntersection * * enumIntersections ) = 0;
  2129. };
  2130. struct __declspec(uuid("2439619f-6516-4a91-a0b9-3cfc98d214d2"))
  2131. IZShift : IUnknown
  2132. {
  2133.     //
  2134.     // Raw methods provided by interface
  2135.     //
  2136.     virtual HRESULT __stdcall PutZShift (
  2137.         double zOrigin,
  2138.         double zOffset ) = 0;
  2139.     virtual HRESULT __stdcall GetZShift (
  2140.         double * zOrigin,
  2141.         double * zOffset ) = 0;
  2142. };
  2143. struct __declspec(uuid("9414e949-ffa0-11d3-9f56-00c04f6bdf0d"))
  2144. ITransform3D : IUnknown
  2145. {
  2146.     //
  2147.     // Raw methods provided by interface
  2148.     //
  2149.     virtual HRESULT __stdcall Move3D (
  2150.         double dx,
  2151.         double dy,
  2152.         double dz ) = 0;
  2153.     virtual HRESULT __stdcall MoveVector3D (
  2154.         struct IVector3D * v ) = 0;
  2155.     virtual HRESULT __stdcall Scale3D (
  2156.         struct IPoint * Origin,
  2157.         double sx,
  2158.         double sy,
  2159.         double sz ) = 0;
  2160.     virtual HRESULT __stdcall RotateVector3D (
  2161.         struct IVector3D * axis,
  2162.         double rotationAngle ) = 0;
  2163.     virtual HRESULT __stdcall Transform3D (
  2164.         enum esriTransformDirection direction,
  2165.         struct ITransformation3D * transformation ) = 0;
  2166.     virtual HRESULT __stdcall ProjectToPlane (
  2167.         struct IPoint * planarOrigin,
  2168.         struct IVector3D * planarPositiveX,
  2169.         struct IVector3D * planarNorm,
  2170.         struct IGeometry * * footprint ) = 0;
  2171. };
  2172. struct __declspec(uuid("f4737332-f6b7-11d3-9f6a-00c04f6bdd7f"))
  2173. IPolycurve2 : IPolycurve
  2174. {
  2175.     //
  2176.     // Raw methods provided by interface
  2177.     //
  2178.     virtual HRESULT __stdcall SplitAtPoints (
  2179.         struct IEnumVertex * splitPoints,
  2180.         VARIANT_BOOL projectOnto,
  2181.         VARIANT_BOOL createParts,
  2182.         double cutoffDistance,
  2183.         struct IEnumSplitPoint * * splitInfo ) = 0;
  2184.     virtual HRESULT __stdcall SplitAtDistances (
  2185.         long distanceCount,
  2186.         double * distances,
  2187.         VARIANT_BOOL asRatios,
  2188.         VARIANT_BOOL createParts,
  2189.         struct IEnumSplitPoint * * splitInfo ) = 0;
  2190.     virtual HRESULT __stdcall DensifyByAngle (
  2191.         double maxSegmentLength,
  2192.         double maxAngleDeviation ) = 0;
  2193. };
  2194. struct __declspec(uuid("48cf4c91-e3d5-11d2-9f2e-00c04f6bdf0d"))
  2195. ISegmentM : IUnknown
  2196. {
  2197.     //
  2198.     // Raw methods provided by interface
  2199.     //
  2200.     virtual HRESULT __stdcall GetMs (
  2201.         double * fromM,
  2202.         double * toM ) = 0;
  2203.     virtual HRESULT __stdcall SetMs (
  2204.         double fromM,
  2205.         double toM ) = 0;
  2206. };
  2207. struct __declspec(uuid("61b43a4b-e3d5-11d2-9f2e-00c04f6bdf0d"))
  2208. ISegmentZ : IUnknown
  2209. {
  2210.     //
  2211.     // Raw methods provided by interface
  2212.     //
  2213.     virtual HRESULT __stdcall GetZs (
  2214.         double * fromZ,
  2215.         double * toZ ) = 0;
  2216.     virtual HRESULT __stdcall SetZs (
  2217.         double fromZ,
  2218.         double toZ ) = 0;
  2219. };
  2220. struct __declspec(uuid("703052bd-25f1-11d3-9f3f-00c04f6bdf0d"))
  2221. ISegmentID : IUnknown
  2222. {
  2223.     //
  2224.     // Raw methods provided by interface
  2225.     //
  2226.     virtual HRESULT __stdcall GetIDs (
  2227.         long * fromID,
  2228.         long * toID ) = 0;
  2229.     virtual HRESULT __stdcall SetIDs (
  2230.         long fromID,
  2231.         long toID ) = 0;
  2232. };
  2233. struct __declspec(uuid("a1d604a8-7914-4435-9b26-43e1ea5baa99"))
  2234. ILine2 : ILine
  2235. {
  2236.     //
  2237.     // Raw methods provided by interface
  2238.     //
  2239.     virtual HRESULT __stdcall PutWKSCoords (
  2240.         WKSPoint * from,
  2241.         WKSPoint * to ) = 0;
  2242.     virtual HRESULT __stdcall QueryWKSCoords (
  2243.         WKSPoint * from,
  2244.         WKSPoint * to ) = 0;
  2245. };
  2246. struct __declspec(uuid("6011fa75-0c4a-11d6-9fa9-00c04f6bdf0d"))
  2247. IRing2 : IRing
  2248. {
  2249.     //
  2250.     // Raw methods provided by interface
  2251.     //
  2252.     virtual HRESULT __stdcall ReshapeEx (
  2253.         struct IPath * reshapeSource,
  2254.         struct IGeometry * * leftResult,
  2255.         struct IGeometry * * rightResult ) = 0;
  2256. };
  2257. struct __declspec(uuid("a532932f-26a6-11d4-9f5e-00c04f6bdf0d"))
  2258. ITriangleStrip : IGeometry
  2259. {};
  2260. struct __declspec(uuid("a5329330-26a6-11d4-9f5e-00c04f6bdf0d"))
  2261. ITriangleFan : IGeometry
  2262. {};
  2263. struct __declspec(uuid("5100f09f-cf23-11d5-9fa1-00c04f6bdf0d"))
  2264. ITriangles : IGeometry
  2265. {};
  2266. struct __declspec(uuid("6039e192-4cc8-11d1-834e-0000f8775be9"))
  2267. IArea : IUnknown
  2268. {
  2269.     //
  2270.     // Raw methods provided by interface
  2271.     //
  2272.     virtual HRESULT __stdcall get_Area (
  2273.         double * Area ) = 0;
  2274.     virtual HRESULT __stdcall get_Centroid (
  2275.         struct IPoint * * Center ) = 0;
  2276.     virtual HRESULT __stdcall get_LabelPoint (
  2277.         struct IPoint * * LabelPoint ) = 0;
  2278.     virtual HRESULT __stdcall QueryCentroid (
  2279.         struct IPoint * Center ) = 0;
  2280.     virtual HRESULT __stdcall QueryLabelPoint (
  2281.         struct IPoint * LabelPoint ) = 0;
  2282. };
  2283. struct __declspec(uuid("82a0b2f0-59bd-437e-9ead-cde15775f260"))
  2284. IEnumVertex2 : IEnumVertex
  2285. {
  2286.     //
  2287.     // Raw methods provided by interface
  2288.     //
  2289.     virtual HRESULT __stdcall WKSNext (
  2290.         WKSPoint * outVertex,
  2291.         long * outPartIndex,
  2292.         long * vertexIndex ) = 0;
  2293. };
  2294. struct __declspec(uuid("847e3f3d-5ebb-43f1-848d-f3eefbc525ed"))
  2295. IEnumCurve2 : IEnumCurve
  2296. {
  2297.     //
  2298.     // Raw methods provided by interface
  2299.     //
  2300.     virtual HRESULT __stdcall QuerySubcurve (
  2301.         double fromDistance,
  2302.         double toDistance,
  2303.         VARIANT_BOOL asRatio,
  2304.         struct ICurve * subcurve ) = 0;
  2305.     virtual HRESULT __stdcall QueryPoint (
  2306.         double fromDistance,
  2307.         VARIANT_BOOL asRatio,
  2308.         struct IPoint * pointOnCurve ) = 0;
  2309. };
  2310. struct __declspec(uuid("032277b2-5704-11d1-8352-0000f8775be9"))
  2311. IMultipoint : IGeometry
  2312. {};
  2313. struct __declspec(uuid("7a5ae276-1230-11d4-9f72-00c04f6bdd7f"))
  2314. IPolyline2 : IPolyline
  2315. {
  2316.     //
  2317.     // Raw methods provided by interface
  2318.     //
  2319.     virtual HRESULT __stdcall get_EnumShortestPath (
  2320.         long fromPart,
  2321.         long FromPoint,
  2322.         long toPart,
  2323.         long ToPoint,
  2324.         struct IEnumSegment * * shortPathEnum ) = 0;
  2325. };
  2326. struct __declspec(uuid("88af3cf5-75b6-4ef2-91db-7e9eaff81f27"))
  2327. IPolyline3 : IPolyline2
  2328. {
  2329.     //
  2330.     // Raw methods provided by interface
  2331.     //
  2332.     virtual HRESULT __stdcall TouchCut (
  2333.         struct IPolyline * pCutter,
  2334.         struct IGeometry * * ppLeftGeom,
  2335.         struct IGeometry * * ppRightGeom ) = 0;
  2336. };
  2337. struct __declspec(uuid("5fa07d6c-d2b7-4a83-870a-0fb8155a4376"))
  2338. IPolyline4 : IPolyline3
  2339. {
  2340.     //
  2341.     // Raw methods provided by interface
  2342.     //
  2343.     virtual HRESULT __stdcall SimplifyEx (
  2344.         VARIANT_BOOL planarSimplify ) = 0;
  2345. };
  2346. struct __declspec(uuid("55e67f71-30ff-11d4-9f5e-00c04f6bdf0d"))
  2347. IPolygon2 : IPolygon
  2348. {
  2349.     //
  2350.     // Raw methods provided by interface
  2351.     //
  2352.     virtual HRESULT __stdcall QueryExteriorRingsEx (
  2353.         long numExteriorRingsRequested,
  2354.         struct IRing * * exteriorRings ) = 0;
  2355.     virtual HRESULT __stdcall QueryInteriorRingsEx (
  2356.         struct IRing * exteriorRing,
  2357.         long numInteriorRingsRequested,
  2358.         struct IRing * * interiorRings ) = 0;
  2359.     virtual HRESULT __stdcall GetConnectedComponents (
  2360.         long numComponentsRequested,
  2361.         struct IPolygon * * components ) = 0;
  2362.     virtual HRESULT __stdcall GetOutermostComponents (
  2363.         long numComponentsRequested,
  2364.         long * numComponentsReturned,
  2365.         struct IPolygon * * components,
  2366.         VARIANT_BOOL * moreComponentsExist ) = 0;
  2367. };
  2368. struct __declspec(uuid("287370ce-b306-4892-8a4c-a7970b132b79"))
  2369. IPolygon3 : IPolygon2
  2370. {
  2371.     //
  2372.     // Raw methods provided by interface
  2373.     //
  2374.     virtual HRESULT __stdcall SimplifySpaghetti ( ) = 0;
  2375. };
  2376. struct __declspec(uuid("5af81eb6-5616-49a0-b0a6-e265803e4bd2"))
  2377. IPolygon4 : IPolygon3
  2378. {
  2379.     //
  2380.     // Raw methods provided by interface
  2381.     //
  2382.     virtual HRESULT __stdcall SimplifyEx (
  2383.         VARIANT_BOOL preserveFromToPoints,
  2384.         VARIANT_BOOL closeRings,
  2385.         VARIANT_BOOL useXORRule ) = 0;
  2386.     virtual HRESULT __stdcall get_ExteriorRingBag (
  2387.         struct IGeometryBag * * ringBag ) = 0;
  2388.     virtual HRESULT __stdcall get_InteriorRingBag (
  2389.         struct IRing * exteriorRing,
  2390.         struct IGeometryBag * * ringBag ) = 0;
  2391.     virtual HRESULT __stdcall get_ConnectedComponentBag (
  2392.         struct IGeometryBag * * polygonBag ) = 0;
  2393.     virtual HRESULT __stdcall get_OutermostComponentBag (
  2394.         struct IGeometryBag * * polygonBag ) = 0;
  2395. };
  2396. struct __declspec(uuid("51cde393-03b4-11d4-9f56-00c04f6bdf0d"))
  2397. IConstructMultiPatch : IUnknown
  2398. {
  2399.     //
  2400.     // Raw methods provided by interface
  2401.     //
  2402.     virtual HRESULT __stdcall ConstructExtrudeFromTo (
  2403.         double fromZ,
  2404.         double toZ,
  2405.         struct IGeometry * baseGeom ) = 0;
  2406.     virtual HRESULT __stdcall ConstructExtrudeAbsolute (
  2407.         double toZ,