CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
FMProfile2DBool.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2022 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24#ifndef __FMPROFILE2DBOOL_H__
25#define __FMPROFILE2DBOOL_H__
26
27#include "FMProfile2D.h"
28
30{
31 class Intersector;
32};
33
34namespace FacetModeler
35{
36
49{
50 public:
55 {
56 eoUnknown = 0,
57 eoOR, // union
58 eoAND, // intersection
59 eoSUB, // difference
60 eoXOR, // exclusive or = union minus intersection
61 eoLastOper
62 };
63
71 class ArgStub
72 {
73 public:
74 ArgStub( const Contour2D & rC2D, OdUInt32 uPriority = 0 )
75 : m_pProfile(0), m_pContour(&rC2D.impl()), m_uPriority(uPriority) { }
76 ArgStub( const IContour2D & rIC2D, OdUInt32 uPriority = 0 )
77 : m_pProfile(0), m_pContour(&rIC2D), m_uPriority(uPriority) { }
78 ArgStub( const Profile2D & rP2D, OdUInt32 uPriority = 0 )
79 : m_pProfile(&rP2D), m_pContour(0), m_uPriority(uPriority) { }
80
81 inline const IContour2D * contour() const { return m_pContour; }
82 inline const Profile2D * profile() const { return m_pProfile; }
83 inline OdUInt32 priority() const { return m_uPriority; }
84
85 ArgStub& setPriority(OdUInt32 uNewP) { m_uPriority = uNewP; return *this; }
86
87 bool isEmpty() const;
88
89 bool isSame (const ArgStub& rOther) const;
90
91 void copyTo (Profile2D& rResult) const;
92
94
95 private:
96 const IContour2D * m_pContour;
97 const Profile2D * m_pProfile;
98 OdUInt32 m_uPriority;
99 };
100
101 public:
105 Profile2DBool( const OdGeTol & gTol = FMGeGbl::gTol );
106
111
115 Profile2DBool& reset( const OdGeTol & gTol = FMGeGbl::gTol );
116
117
133 Operations eOper,
134 ArgStub rArg1,
135 ArgStub rArg2,
136 Profile2D& rResult );
137
155 Operations eOper,
156 ArgStub rLinesArg,
157 ArgStub rRegionArg,
158 Profile2D& rResult,
159 bool bRegionIsOpen = false );
160
177 Operations eOper,
178 ArgStub rArg1,
179 ArgStub rArg2,
180 Profile2D& rResult );
181
192 Result pushRegion( ArgStub rArg, bool bSaveCopy = true );
193
207
235 ArgStub rSource,
236 ArgStub rStencilRegion,
237 Profile2D& rResult,
238 OdUInt32 uMask,
239 OdUInt32 uInBits,
240 OdUInt32 uOutBits = 0,
241 OdUInt32 uBoundaryBits = 0
242 );
243
244 private:
245 OdGeTol m_gTol;
247 };
248};
249
250#endif //__FMPROFILE2DBOOL_H__
#define FMGEOMETRY_API
unsigned int OdUInt32
bool isSame(const ArgStub &rOther) const
const IContour2D * contour() const
ArgStub & setPriority(OdUInt32 uNewP)
const Profile2D * profile() const
ArgStub(const Contour2D &rC2D, OdUInt32 uPriority=0)
ArgStub(const Profile2D &rP2D, OdUInt32 uPriority=0)
void copyTo(Profile2D &rResult) const
ArgStub(const IContour2D &rIC2D, OdUInt32 uPriority=0)
Result stencilFlags(ArgStub rSource, ArgStub rStencilRegion, Profile2D &rResult, OdUInt32 uMask, OdUInt32 uInBits, OdUInt32 uOutBits=0, OdUInt32 uBoundaryBits=0)
Result evalRegions(Operations eOper, ArgStub rArg1, ArgStub rArg2, Profile2D &rResult)
Profile2DBool & reset(const OdGeTol &gTol=FMGeGbl::gTol)
Result evalLines(Operations eOper, ArgStub rArg1, ArgStub rArg2, Profile2D &rResult)
Profile2DBool(const OdGeTol &gTol=FMGeGbl::gTol)
Result pushRegion(ArgStub rArg, bool bSaveCopy=true)
Result evalLinesRegion(Operations eOper, ArgStub rLinesArg, ArgStub rRegionArg, Profile2D &rResult, bool bRegionIsOpen=false)
Result evalPushedRegions(Operations eOper, Profile2D &rResult)
Definition: GeTol.h:49