MNChamferData10.h

Go to the documentation of this file.
00001 //**************************************************************************/
00002 // Copyright (c) 1998-2005 Autodesk, Inc.
00003 // All rights reserved.
00004 // 
00005 // These coded instructions, statements, and computer programs contain
00006 // unpublished proprietary information written by Autodesk, Inc., and are
00007 // protected by Federal copyright law. They may not be disclosed to third
00008 // parties or copied or duplicated in any form, in whole or in part, without
00009 // the prior written consent of Autodesk, Inc.
00010 //**************************************************************************/
00011 // DESCRIPTION: Interface to MNChamfeData10 class
00012 //***************************************************************************/
00013 #pragma once
00014 #include "export.h"
00015 #include "maxheap.h"
00016 #include "point3.h"
00017 #include "tab.h"
00018 
00019 // forward declarations
00020 class InterpolationData;
00021 class TriFaceData;
00022 class MapInterpolationData;
00023 class MNChamferData;
00024 class MNMesh;
00025 class Point3;
00026 
00027 
00029 
00067 class MNChamferData10 : public MaxHeapOperators {
00068 public:
00072     DllExport MNChamferData10(MNChamferData& in_data);
00073     DllExport virtual ~MNChamferData10();
00074 
00076     // on segmented edges.
00077     DllExport void GetDelta (float in_amount, Tab<Point3>&  out_delta);
00079     DllExport void setNumVerts (int in_nv, bool in_keep=TRUE, int in_resizer=0);
00081     DllExport void InitToMesh (const MNMesh&  in_m);
00083     DllExport void ClearLimits();
00086     DllExport bool GetMapDelta (MNMesh&  in_mm, int in_mapChannel, float in_amount, Tab<UVVert>&  out_delta);
00088     DllExport Tab<UVVert>& MDir(int in_mapChannel);
00090     DllExport Tab<Point3>& GetVDIR();
00092     DllExport Tab<float>& GetVMAX();
00094     DllExport Tab<UVVert>*& GetMDIR();
00095 
00096 private:
00098     MNChamferData10& operator=(const MNChamferData10&);
00099     friend class MNMesh;
00100     // New functions used by MNMeshUtilities10::ChamferEdges. They don't really make sense in
00101     // any other context, so they're private.
00102 
00103     // Call before adding vertices with AddNextEdgeInterpolationVertex
00104     void StartEdgeInterlopation();
00105     // Adds the next vertex in a sequence to be interpolated. The vertices being interpolated
00106     // between must be included.
00107     void AddNextEdgeInterpolationVertex(int in_vertex);
00108     // Call after the last vertex has been added.
00109     void FinishEdgeInterpolation();
00110 
00111     // see TriFaceData::TriFaceData
00112     void StartTriFace(int in_rootVertex, const Point3& in_position, int in_segments, bool in_smoothable);
00113     // See TriFaceData::AddNextOppositeVertex
00114     void AddNextOppositeVertex(int in_triIndex, int in_vertex, const Point3& in_position);
00115     // See TriFacedata::AddNextTriFaceVertex
00116     void AddNextTriFaceVertex(int in_segmentIndex, int in_vertex);
00117 
00118     // Call before add any mapping vertices. Set in_round to true if the mapping vertices 
00119     // lie on an original face (i.e., not a quad face)
00120     void StartMapInterpolation(bool in_round);
00121     // Adds the next map vertex in a sequence to be interpolated.
00122     void AddNextMapInterpolationVertex(int in_mapChannel, int in_vertex);
00123     // Call after adding the last map vertex.
00124     void FinishMapInterpolation();
00125 
00126     // decorated MNChamferData object
00127     MNChamferData& m_MNChamferData;
00128 
00129     // sequences of segmented vertices along quad-face edges
00130     Tab<InterpolationData*> m_interpolationSequences;
00131     // data pertaining to all triangular faces created during ChamferEdges
00132     Tab<TriFaceData*> m_triFaces;
00133     // sequences of segmented texture vertices 
00134     Tab<MapInterpolationData*> m_mapInterpolationSequences;
00135 };
00136