00001 // Copyright (c) 1998-2014 by Tech Soft 3D, Inc. 00002 // 00003 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., 00004 // and considered a trade secret as defined under civil and criminal statutes. 00005 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of 00006 // unauthorized use or misappropriation of its trade secrets. Use of this information 00007 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under 00008 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use. 00009 00010 #pragma once 00011 00012 00013 #ifdef HMFC_STATIC_LIB 00014 # error "Code cannot be statically linked." 00015 #endif 00016 00017 00018 #ifdef H_PACK_8 00019 # pragma pack(push) 00020 # pragma pack(8) 00021 #endif 00022 00023 00025 00026 00027 #include "PointCloudAPI.h" 00028 #include "HWindowInfoOOC.h" 00029 #include "varray.h" 00030 00031 00033 00034 00038 class HWindowFilterOOC : public ooc::query::Filter { 00039 public: 00043 HWindowFilterOOC (bool deep_filter); 00044 00047 virtual bool RejectPointsInMemory () override; 00048 00051 virtual bool RejectPointsOnDisk () override; 00052 00055 virtual bool RejectNode (ooc::NodeHandle const & node_handle) override; 00056 00061 virtual bool RejectBounding (ooc::Point const & min_bound, ooc::Point const & max_bound) override; 00062 00067 virtual bool AcceptPoint (ooc::Point const & point, size_t point_index) override; 00068 00071 void AddRectangleWindow (HBaseView & view, ooc::Point const & window_min, ooc::Point const & window_max); 00072 00075 void AddTriangleWindow (HBaseView & view, ooc::Point const & p1, ooc::Point const & p2, ooc::Point const & p3); 00076 00079 void ClearWindows (); 00080 00083 bool HasWindows () const; 00084 00085 private: 00086 void WorldBoxCorners (ooc::Point const & world_min, ooc::Point const & world_max, ooc::Point (&out_world_points)[8]); 00087 00088 private: 00089 VArray<HWindowInfoOOC> window_infos; 00090 bool deep_filter; 00091 }; 00092 00093 00094