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 00035 class HWindowFilterOOC : public ooc::query::Filter { 00036 public: 00037 HWindowFilterOOC (bool deep_filter); 00038 00039 virtual bool RejectPointsInMemory () override; 00040 virtual bool RejectPointsOnDisk () override; 00041 virtual bool RejectNode (ooc::NodeHandle const & node_handle) override; 00042 virtual bool RejectBounding (ooc::Point const & min_bound, ooc::Point const & max_bound) override; 00043 virtual bool AcceptPoint (ooc::Point const & point, size_t point_index) override; 00044 00045 void AddRectangleWindow (HBaseView & view, ooc::Point const & window_min, ooc::Point const & window_max); 00046 void AddTriangleWindow (HBaseView & view, ooc::Point const & p1, ooc::Point const & p2, ooc::Point const & p3); 00047 void ClearWindows (); 00048 bool HasWindows () const; 00049 00050 private: 00051 void WorldBoxCorners (ooc::Point const & world_min, ooc::Point const & world_max, ooc::Point (&out_world_points)[8]); 00052 00053 private: 00054 VArray<HWindowInfoOOC> window_infos; 00055 bool deep_filter; 00056 }; 00057 00058 00059