00001 /* $NoKeywords: $ */ 00002 /* 00003 // 00004 // Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved. 00005 // OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert 00006 // McNeel & Associates. 00007 // 00008 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. 00009 // ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF 00010 // MERCHANTABILITY ARE HEREBY DISCLAIMED. 00011 // 00012 // For complete openNURBS copyright information see <http://www.opennurbs.org>. 00013 // 00015 */ 00016 00017 #if !defined(ON_DETAIL_OBJECTY_INC_) 00018 #define ON_DETAIL_OBJECTY_INC_ 00019 00020 class ON_CLASS ON_DetailView : public ON_Geometry 00021 { 00022 ON_OBJECT_DECLARE(ON_DetailView); 00023 00024 public: 00025 ON_DetailView(); 00026 ~ON_DetailView(); 00027 00028 // C++ defaults for copy constructor and 00029 // operator= work fine. 00030 00032 // 00033 // virtual ON_Object overrides 00034 // 00035 void MemoryRelocate(); 00036 00037 ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const; 00038 00039 void Dump( ON_TextLog& ) const; 00040 00041 unsigned int SizeOf() const; 00042 00043 ON_BOOL32 Write( 00044 ON_BinaryArchive& binary_archive 00045 ) const; 00046 00047 ON_BOOL32 Read( 00048 ON_BinaryArchive& binary_archive 00049 ); 00050 00051 ON::object_type ObjectType() const; // returns ON::detail_object 00052 00054 // 00055 // virtual ON_Geometry overrides 00056 // The m_boundary determines all bounding boxes 00057 // 00058 int Dimension() const; 00059 00060 ON_BOOL32 GetBBox( 00061 double* boxmin, 00062 double* boxmax, 00063 int bGrowBox = false 00064 ) const; 00065 00066 bool GetTightBoundingBox( 00067 ON_BoundingBox& tight_bbox, 00068 int bGrowBox = false, 00069 const ON_Xform* xform = 0 00070 ) const; 00071 00072 ON_BOOL32 Transform( const ON_Xform& xform ); 00073 00074 // m_page_per_model_ratio is the ratio of page length / model length 00075 // where both lengths are in the same unit system 00076 // (ex. 1/4" on page = 1' in model = 0.25/12 = 0.02083) 00077 // ( 1mm on page = 1m in model = 1/1000 = 0.001) 00078 // If m_page_per_model_ratio > 0.0, then the detail 00079 // is drawn using the specified scale. 00080 double m_page_per_model_ratio; 00081 00082 // A view with ON_3dmView::m_view_type = ON::nested_view_type 00083 // This field is used for IO purposes only. Runtime detail 00084 // view projection information is on CRhDetailViewObject. 00085 ON_3dmView m_view; 00086 00087 // 2d curve in page layout coordinates in mm 00088 // (0,0) = lower left corner of page 00089 ON_NurbsCurve m_boundary; 00090 }; 00091 00092 00093 00094 #endif 00095