CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
TrVisViewportDef.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, 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-2024 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// GLES2 device viewport definition
24
25#ifndef ODTRVISVIEWPORTDEF
26#define ODTRVISVIEWPORTDEF
27
28#include "TD_PackPush.h"
29
30#include "Ge/GeMatrix3d.h"
31#include "IntArray.h"
32#include "Ge/GePoint2dArray.h"
33#include "UInt8Array.h"
34#include "UInt16Array.h"
35
36#include "TrVisRenderMode.h"
37#include "TrVisOverlayDef.h"
38
43{
44 // Flags
46 {
47 kPSOverallViewport = (1 << 0), // Overall PaperSpace viewport
48 kPSModelViewport = (1 << 1), // ModelSpace viewport in PaperSpace
49 kPSHelperViewport = (1 << 2), // Helper PaperSpace viewport
50 kVpVisible = (1 << 3), // Viewport is visible
51 // Store last definition flag for extensibility
53 };
54
57
58 // Reset viewport flags
59 void resetViewportFlags(OdUInt16 vpFlags = 0) { m_vpFlags = vpFlags; }
60
61 // PSOverallViewport flag
64
65 // PSModelViewport flag
68
69 // PSHelperViewport flag
72
73 // VpVisible flag
74 bool isViewportVisible() const { return GETBIT(m_vpFlags, kVpVisible); }
75 void setViewportVisible(bool bSet) { SETBIT(m_vpFlags, kVpVisible, bSet); }
76
77 // Setup default values
83
84 // Overall viewport Id
87};
88
93{
96
97 void reset()
98 {
99 m_counts.setPhysicalLength(0);
100 m_points.setPhysicalLength(0);
101 }
102 bool hasRegion() const { return !m_counts.isEmpty(); }
103
104 bool hasCounts() const { return !m_counts.isEmpty(); }
105 bool hasPoints() const { return !m_points.isEmpty(); }
106
107 OdUInt32 numCounts() const { return m_counts.size(); }
108 OdUInt32 numPoints() const { return m_points.size() / 2; }
109
110 void setCounts(const OdIntArray &aCounts) { m_counts = aCounts; }
111 void setPoints(const OdFloatArray &aPoints) { m_points = aPoints; }
112
113 const int *counts() const { return m_counts.getPtr(); }
114 const float *points() const { return m_points.getPtr(); }
115};
116
121{
122 // Full (non-clipped) viewport rectangle in screen coordinates
124 // Screen coordinates to local coordinates transform
126
127 void reset()
128 {
129 m_viewportRect.m_min = OdGePoint2d(0.0, 1.0);
130 m_viewportRect.m_max = OdGePoint2d(1.0, 0.0);
132 }
133
135 void setViewportRect(const OdGsDCRectDouble &vptRect) { m_viewportRect = vptRect; }
136
137 const OdGeMatrix3d &regionXform() const { return m_regionXform; }
138 void setRegionXform(const OdGeMatrix3d &regXform) { m_regionXform = regXform; }
139
141 { rectOut = m_viewportRect; xform2d(rectOut.m_min); xform2d(rectOut.m_max); }
144
145 OdGePoint2d localPoint(const OdGePoint2d &screenPt) const
146 { OdGePoint2d pt(screenPt); xform2d(pt); return pt; }
147 void localPoint(float *ptOut, const float *ptIn) const
148 { ptOut[0] = ptIn[0]; ptOut[1] = ptIn[1]; xform2d(ptOut); }
149
150 void localRegion(OdTrVisViewportRegionDef &regionOut, const OdTrVisViewportRegionDef &regionIn) const
151 { regionOut = regionIn; const OdUInt32 nPoints = regionOut.m_points.size();
152 float *pPtOut = regionOut.m_points.asArrayPtr();
153 for (OdUInt32 nPoint = 0; nPoint < nPoints; nPoint++, pPtOut += 2)
154 xform2d(pPtOut); }
156 { OdTrVisViewportRegionDef regionOut; localRegion(regionOut, region); return regionOut; }
157protected:
158 inline void xform2d(OdGePoint2d &pt) const
159 { pt = OdGePoint3d(pt.x, pt.y, 0.0).transformBy(m_regionXform).convert2d(); }
160 inline void xform2d(float *pPt) const
161 { OdGePoint3d transformPt(pPt[0], pPt[1], 0.0); transformPt.transformBy(m_regionXform);
162 pPt[0] = (float)transformPt.x; pPt[1] = (float)transformPt.y; }
163};
164
169{
173
175 {
176 m_color = 0;
177 m_width = 1;
178 m_region.reset();
179 }
180
182 ODCOLORREF color() const { return m_color; }
183
184 void setWidth(int nWidth) { m_width = nWidth; }
185 int width() const { return m_width; }
186
188 const OdTrVisViewportRegionDef &region() const { return m_region; }
190};
191
196{
197 enum Flags
198 {
199 // Enable non-rectangular clipping.
200 kEnableNrcClip = (1 << 0),
201 // Enable borders rendering.
202 kEnableBorder = (1 << 1)
203 };
204 // Viewport clipping flags.
206 // Viewport clipping rectangle in screen coordinates.
208 // Viewport local data convertions.
210 // Non-rectangular clipping region in screen coordinates.
212 // Border in screen coordinates.
214
215 void resetFlags(OdUInt16 nFlags = 0)
216 {
217 m_flags = nFlags;
218 }
220 {
221 resetFlags();
222 m_screenRect.m_min = OdGePoint2d(0.0, 1.0);
223 m_screenRect.m_max = OdGePoint2d(1.0, 0.0);
224 m_localXform.reset();
225 m_nrcClip.reset();
226 m_border.setDefault();
227 }
228
229 void apply(const OdTrVisViewportClipDef &pDef, bool bApplyNrcClip, bool bApplyBorder)
230 {
233 if (bApplyNrcClip)
235 m_nrcClip = pDef.m_nrcClip;
236 if (bApplyBorder)
238 m_border = pDef.m_border;
239 }
240
241 void enableNrcClip(bool bSet) { SETBIT(m_flags, kEnableNrcClip, bSet); }
242 bool isNrcClipEnabled() const { return GETBIT(m_flags, kEnableNrcClip) && m_nrcClip.hasRegion(); }
243
244 void enableBorder(bool bSet) { SETBIT(m_flags, kEnableBorder, bSet); }
245 bool isBorderEnabled() const { return GETBIT(m_flags, kEnableBorder) && m_border.region().hasRegion(); }
246
248 const OdGsDCRectDouble &screenRect() const { return m_screenRect; }
249
250 void setLocalXform(const OdTrVisViewportRegionXform &locXform) { m_localXform = locXform; }
251 bool hasLocalXform() const { return !m_localXform.regionXform().isEqualTo(OdGeMatrix3d::kIdentity); }
254
255 void setNrcClipRegion(const OdTrVisViewportRegionDef &nrcClip) { m_nrcClip = nrcClip; }
258
260 const OdTrVisViewportBorderDef &border() const { return m_border; }
262};
263
297
302{
304
306 {
307 m_lineStyleConfig = ODRGBA(1, 2, 2, 1);
308 }
309
312
316
321
324
327 void setLineStyleConfig(bool bPointLwds = true, OdUInt32 nCapStyle = 2, OdUInt32 nJoinStyle = 2)
328 { m_lineStyleConfig = ODRGBA((bPointLwds) ? 1 : 0, nCapStyle, nJoinStyle, 0xFF); updateDefStyle(); }
329
331 bool isDefStyle() const { return ODGETALPHA(m_lineStyleConfig) != 0; }
332
335};
336
341{
343
345 {
346 m_fadingConfig = ODRGBA(0, 0, 0, 7);
347 }
348
349 void setAsCref(ODCOLORREF cref) { m_fadingConfig = cref; }
351
355 void setFading(OdUInt8 nLayerFade = 0, OdUInt8 nXrefFade = 0, OdUInt8 nMfFade = 0) { m_fadingConfig = ODRGBA(nLayerFade, nXrefFade, nMfFade, 0); }
356
360
363 ((ODGETGREEN(m_fadingConfig) != 0xFF) ? 2 : 0) |
364 ((ODGETBLUE(m_fadingConfig) != 0xFF) ? 4 : 0)); }
366
367 bool operator ==(const OdTrVisViewportFadingDef &def) const { return m_fadingConfig == def.m_fadingConfig; }
368 bool operator !=(const OdTrVisViewportFadingDef &def) const { return m_fadingConfig != def.m_fadingConfig; }
369};
370
375{
379
381 {
382 m_lineweightsEnum.setPhysicalLength(0);
383 m_lineweightsEnum2x.setPhysicalLength(0);
384 m_lineweightsCoef = 1.0;
385 }
386
387 void setLineweightsEnum(const OdUInt8Array &lwdEnum) { m_lineweightsEnum = lwdEnum; }
388 const OdUInt8 *lineweightsEnum() const { return m_lineweightsEnum.getPtr(); }
389 void setLineweightsEnum2(const OdUInt16Array &lwdEnum) { m_lineweightsEnum2x = lwdEnum; }
390 const OdUInt16 *lineweightsEnum2() const { return m_lineweightsEnum2x.getPtr(); }
392 OdUInt32 getLineweight(int nLwd) const { return (m_lineweightsEnum2x.empty()) ? OdUInt32(lineweightsEnum()[nLwd]) : OdUInt32(lineweightsEnum2()[nLwd]); }
393 bool hasLineweightsEnum() const { return !m_lineweightsEnum.isEmpty() || !m_lineweightsEnum2x.isEmpty(); }
394 bool hasLineweightsEnum2() const { return !m_lineweightsEnum2x.isEmpty(); }
395
396 void setLineweightsCoef(double lwdCoef) { m_lineweightsCoef = lwdCoef; }
397 double lineweightsCoef() const { return m_lineweightsCoef; }
398};
399
404{
411
412 void setDefault(bool bInitVpDef = true)
413 {
414 if (bInitVpDef) OdTrVisViewportDef::setDefault();
415 m_viewParams.setDefault();
416 m_clip.setDefault();
417 m_shading.setDefault();
418 m_linestyle.setDefault();
419 m_fading.setDefault();
420 m_lineweights.setDefault();
421 }
422
423 void setViewportDef(const OdTrVisViewportDef &vpDef) { *static_cast<OdTrVisViewportDef*>(this) = vpDef; }
424 const OdTrVisViewportDef &viewportDef() const { return *this; }
425 OdTrVisViewportDef &viewportDef() { return *this; }
426
427 void setViewParams(const OdTrVisViewParamsDef &viewProps) { m_viewParams = viewProps; }
430
431 void setViewportClip(const OdTrVisViewportClipDef &vpClip, bool bSetNrcClip = true, bool bSetBorder = true)
432 { m_clip.apply(vpClip, bSetNrcClip, bSetBorder); }
433 const OdTrVisViewportClipDef &viewportClip() const { return m_clip; }
435
439
443
444 void setViewportFading(const OdTrVisViewportFadingDef &vpFade) { m_fading = vpFade; }
447
451};
452
453#include "TD_PackPop.h"
454
455#endif // ODTRVISVIEWPORTDEF
OdArray< float, OdMemoryAllocator< float > > OdFloatArray
Definition GsFiler.h:58
OdArray< int, OdMemoryAllocator< int > > OdIntArray
Definition IntArray.h:35
#define ODGETBLUE(rgb)
#define ODCOLORREF
#define ODGETGREEN(rgb)
#define ODRGBA(r, g, b, a)
#define ODGETALPHA(rgba)
#define ODGETRED(rgb)
unsigned int OdUInt32
unsigned short OdUInt16
unsigned char OdUInt8
#define SETBIT(flags, bit, value)
Definition OdaDefs.h:516
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
const OdTrVisId kTrVisNegativeId
Definition TrVisDefs.h:135
const OdTrVisId kTrVisNullId
Definition TrVisDefs.h:141
OdTrVisId OdTrVisVisualStyleId
Definition TrVisDefs.h:120
OdTrVisId OdTrVisViewportId
Definition TrVisDefs.h:103
OdTrVisId OdTrVisProgramId
Definition TrVisDefs.h:112
#define OD_TRVIS_SETALPHA(color, alpha)
Definition TrVisDefs.h:272
OdArray< OdUInt16, OdMemoryAllocator< OdUInt16 > > OdUInt16Array
Definition UInt16Array.h:34
OdArray< OdUInt8, OdMemoryAllocator< OdUInt8 > > OdUInt8Array
Definition UInt8Array.h:35
const T * asArrayPtr() const
Definition OdArray.h:1612
size_type size() const
Definition OdArray.h:1254
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
Definition GeMatrix3d.h:97
OdGePoint3d & transformBy(const OdGeMatrix3d &xfm)
OdGePoint2d convert2d(const OdGePlanarEnt &plane) const
OdGePoint2d m_min
Definition GsDefs.h:464
OdGePoint2d m_max
Definition GsDefs.h:466
void setRegion(const OdTrVisViewportRegionDef &region)
const OdTrVisViewportRegionDef & region() const
OdTrVisViewportRegionDef & region()
OdTrVisViewportRegionDef m_region
void setColor(ODCOLORREF color)
OdTrVisViewportRegionXform & localXform()
void enableNrcClip(bool bSet)
void setNrcClipRegion(const OdTrVisViewportRegionDef &nrcClip)
void setLocalXform(const OdTrVisViewportRegionXform &locXform)
const OdTrVisViewportBorderDef & border() const
OdGsDCRectDouble m_screenRect
OdTrVisViewportRegionDef m_nrcClip
const OdTrVisViewportRegionXform & localXform() const
void setBorder(const OdTrVisViewportBorderDef &border)
OdTrVisViewportRegionDef & nrcClipRegion()
void apply(const OdTrVisViewportClipDef &pDef, bool bApplyNrcClip, bool bApplyBorder)
const OdGsDCRectDouble & screenRect() const
OdTrVisViewportRegionXform m_localXform
void enableBorder(bool bSet)
void resetFlags(OdUInt16 nFlags=0)
void setScreenRect(const OdGsDCRectDouble &screenRect)
OdTrVisViewportBorderDef & border()
const OdTrVisViewportRegionDef & nrcClipRegion() const
OdTrVisViewportBorderDef m_border
OdTrVisViewportLineweightsDef m_lineweights
const OdTrVisViewportLineStyleDef & viewportLinestyles() const
void setViewportLineweights(const OdTrVisViewportLineweightsDef &vpLwd)
OdTrVisViewportClipDef m_clip
void setViewportFading(const OdTrVisViewportFadingDef &vpFade)
OdTrVisViewportFadingDef & viewportFading()
OdTrVisViewportShadingDef m_shading
OdTrVisViewportFadingDef m_fading
OdTrVisViewportDef & viewportDef()
OdTrVisViewportShadingDef & viewportShading()
void setViewportDef(const OdTrVisViewportDef &vpDef)
void setViewportLinestyles(const OdTrVisViewportLineStyleDef &vpLs)
const OdTrVisViewParamsDef & viewParams() const
OdTrVisViewportLineStyleDef & viewportLinestyles()
OdTrVisViewParamsDef & viewParams()
const OdTrVisViewportFadingDef & viewportFading() const
const OdTrVisViewportShadingDef & viewportShading() const
void setViewportClip(const OdTrVisViewportClipDef &vpClip, bool bSetNrcClip=true, bool bSetBorder=true)
void setDefault(bool bInitVpDef=true)
OdTrVisViewParamsDef m_viewParams
const OdTrVisViewportDef & viewportDef() const
const OdTrVisViewportClipDef & viewportClip() const
const OdTrVisViewportLineweightsDef & viewportLineweights() const
void setViewParams(const OdTrVisViewParamsDef &viewProps)
OdTrVisViewportClipDef & viewportClip()
OdTrVisViewportLineweightsDef & viewportLineweights()
void setViewportShading(const OdTrVisViewportShadingDef &vpShad)
OdTrVisViewportLineStyleDef m_linestyle
bool isPSModelViewport() const
OdTrVisViewportId overallViewportId() const
bool isPSOverallViewport() const
bool isPSHelperViewport() const
bool isViewportVisible() const
void setViewportVisible(bool bSet)
void setOverallViewportId(OdTrVisViewportId vpId)
void resetViewportFlags(OdUInt16 vpFlags=0)
OdTrVisViewportId m_overallViewportId
void setPSOverallViewport(bool bSet)
void setPSHelperViewport(bool bSet)
void setPSModelViewport(bool bSet)
bool operator!=(const OdTrVisViewportFadingDef &def) const
bool operator==(const OdTrVisViewportFadingDef &def) const
void setAsCref(ODCOLORREF cref)
void setXrefFade(OdUInt8 nFade)
void setFading(OdUInt8 nLayerFade=0, OdUInt8 nXrefFade=0, OdUInt8 nMfFade=0)
void setMetafileFade(OdUInt8 nFade)
void setLayerFade(OdUInt8 nFade)
ODCOLORREF getAsCref() const
bool operator==(const OdTrVisViewportLineStyleDef &def) const
void setLineStyle(OdUInt32 nCapStyle, OdUInt32 nJoinStyle)
void enablePointsLineweight(bool bEnable)
bool operator!=(const OdTrVisViewportLineStyleDef &def) const
void setLineStyleConfig(bool bPointLwds=true, OdUInt32 nCapStyle=2, OdUInt32 nJoinStyle=2)
void setLineCapStyle(OdUInt32 nStyle)
void setAsCref(ODCOLORREF cref)
void setLineJoinStyle(OdUInt32 nStyle)
const OdUInt16 * lineweightsEnum2() const
void setLineweightsEnum2(const OdUInt16Array &lwdEnum)
OdUInt32 getLineweight(int nLwd) const
void setLineweightsCoef(double lwdCoef)
const OdUInt8 * lineweightsEnum() const
void setLineweightsEnum(const OdUInt8Array &lwdEnum)
void setPoints(const OdFloatArray &aPoints)
const int * counts() const
void setCounts(const OdIntArray &aCounts)
const float * points() const
void localViewportRect(OdGsDCRectDouble &rectOut) const
void xform2d(OdGePoint2d &pt) const
void setRegionXform(const OdGeMatrix3d &regXform)
void xform2d(float *pPt) const
void setViewportRect(const OdGsDCRectDouble &vptRect)
void localRegion(OdTrVisViewportRegionDef &regionOut, const OdTrVisViewportRegionDef &regionIn) const
void localPoint(float *ptOut, const float *ptIn) const
const OdGsDCRectDouble & viewportRect() const
OdGsDCRectDouble localViewportRect() const
const OdGeMatrix3d & regionXform() const
OdGePoint2d localPoint(const OdGePoint2d &screenPt) const
OdTrVisViewportRegionDef localRegion(const OdTrVisViewportRegionDef &region) const
OdTrVisProgramId renderProgram() const
OdTrVisRenderMode & renderMode()
ODCOLORREF faceFillColor() const
OdTrVisRenderMode m_renderMode
OdTrVisVisualStyleId visualStyle() const
void setRenderProgram(OdTrVisProgramId programId)
const OdTrVisRenderMode & renderMode() const
OdTrVisVisualStyleId m_visualStyle
void setFaceFillColor(ODCOLORREF fillColor)
void setRenderMode(const OdTrVisRenderMode &rm)
void setVisualStyle(OdTrVisVisualStyleId visualStyleId)