CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GsViewImpl.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
24#ifndef ODGSVIEWIMPL_INC
25#define ODGSVIEWIMPL_INC
26
27#include "TD_PackPush.h"
28#include "Gs/Gs.h"
29#include "Gs/GsBaseModule.h"
30#include "Gs/GsDCRectArray.h"
31#include "DbStubPtrArray.h"
32#include "Ge/GePoint3d.h"
33#include "Ge/GeVector3d.h"
34#include "Ge/GeMatrix3d.h"
35#include "UInt8Array.h"
36#include "SharedPtr.h"
37#include "Gs/GsDrawableHolder.h"
38#include "Gi/GiCommonDraw.h"
39#include "Gs/GsProperties.h"
40#include "Gs/GsCullingVolume.h"
41#include "Gs/GsViewLocalId.h"
42#include "Gs/GsOverlayDefs.h"
44#include "ThreadsCounter.h"
45
48class OdGiPathNode;
49
50struct OdSiShape;
55
64{
65public:
67
106
111
112 // OdGsView methods
113
121 virtual void init(OdGsBaseVectorizeDevice* pDevice,
122 const OdGsClientViewInfo* pViewInfo = 0,
123 bool enableLayerVisibilityPerView = false);
124
130 virtual OdGsDevice* device() const;
131
137 virtual void clientViewInfo(OdGsClientViewInfo& viewInfo) const;
138
139
158 virtual RenderMode mode() const;
159
180
200 virtual void setMode(RenderMode mode);
201
202
211 virtual void freezeLayer(OdDbStub* layerID);
212
221 virtual void thawLayer(OdDbStub* layerID);
222
230 virtual void clearFrozenLayers();
231
232
239
245 virtual void getViewportBorderProperties(ODCOLORREF& color, int& width) const;
246
251 virtual void setViewportBorderVisibility(bool visible);
252
258 virtual bool isViewportBorderVisible() const;
259
260
265 virtual void setEnableFrontClip(bool enable);
266
272 virtual bool isFrontClipped() const;
273
278 virtual void setFrontClip(double distance);
279
283 virtual double frontClip() const;
284
289 virtual void setEnableBackClip(bool enable);
290
296 virtual bool isBackClipped() const;
297
302 virtual void setBackClip(double distance);
303
307 virtual double backClip() const;
308
309
310
314 virtual OdGePoint3d position() const;
315
319 virtual OdGePoint3d target() const;
320
324 virtual OdGeVector3d upVector() const;
325
329 virtual double fieldWidth() const;
330
334 virtual double fieldHeight() const;
338 double windowAspect() const;
339
343 virtual double lensLength() const;
344
349 virtual void setLensLength(double lensLength);
350
354 virtual bool isPerspective() const;
355
356
357
368 virtual void beginInteractivity(double frameRateInHz);
369
377 virtual bool isInInteractivity() const;
378
384 virtual double interactivityFrameRate() const;
385
392 virtual void endInteractivity();
393
400 virtual void flush();
401
402
403
407 virtual void hide();
408
412 virtual void show();
413
419 virtual bool isVisible();
420
421
422
431 virtual OdGsViewPtr cloneView(bool cloneViewParameters = true, bool cloneGeometry = false);
432
449 virtual bool exceededBounds();
450
456 virtual void enableStereo(bool enabled);
457
463 virtual bool isStereoEnabled() const;
464
480 virtual void setStereoParameters(double magnitude, double parallax);
481
497 virtual void getStereoParameters(double& magnitude, double& parallax) const;
498
503 virtual void initLights(OdRxIterator* pLightsIterator);
504
513 virtual void getSnapShot(OdGiRasterImagePtr &pImage, const OdGsDCRect &region);
514
515
516
526 virtual void setViewport(const OdGePoint2d& lowerLeft, const OdGePoint2d& upperRight);
527
537 virtual void setViewport(const OdGsDCRect& screenRect);
538
547 virtual void setViewport(const OdGsDCRectDouble& screenRec);
548
560 virtual void getViewport(OdGePoint2d& lowerLeft, OdGePoint2d& upperRight) const;
561
573 virtual void getViewport(OdGsDCRect& screenRect) const;
574
583 virtual void getViewport(OdGsDCRectDouble& screenRec) const;
584
585
586
590 virtual OdGeMatrix3d screenMatrix() const;
591
600
605
610
615
620 virtual void viewParameters(OdGsView* pView) const;
621
622
623
629 virtual double lineweightToDcScale() const;
630
637 virtual void setLineweightToDcScale(double scale);
638
646 virtual void setLineweightEnum(int numLineweights, const OdUInt8* lineweights, const OdUInt16 *altSourceLwds);
647
656
665
671 virtual double linetypeScaleMultiplier() const;
672
673
674
685 virtual void dolly(const OdGeVector3d& dollyVector);
686
699 virtual void dolly(double xDolly, double yDolly, double zDolly);
700
715 virtual void roll(double rollAngle);
716
733 virtual void orbit(double xOrbit, double yOrbit);
734
740 virtual void zoom(double zoomFactor);
741
758 virtual void pan(double xPan, double yPan);
759
780 virtual void setView(const OdGePoint3d & position,
781 const OdGePoint3d& target,
782 const OdGeVector3d& upVector,
783 double fieldWidth,
784 double fieldHeight,
785 Projection projection = kParallel);
786
787
788
795 virtual void zoomExtents(const OdGePoint3d &minPt, const OdGePoint3d &maxPt);
796
803 virtual void zoomWindow(const OdGePoint2d &lowerLeft, const OdGePoint2d &upperRight);
804
810 virtual bool pointInView(const OdGePoint3d &pt) const;
811
818 virtual bool extentsInView(const OdGePoint3d &minPt, const OdGePoint3d &maxPt) const;
819
820
821
828 virtual void viewportClipRegion(OdIntArray& counts, OdGePoint2dArray& vertices) const;
829
836 virtual void viewportClipRegion(OdIntArray& counts, OdGsDCPointArray& dcPts) const;
837
845 virtual void setViewportClipRegion(int numContours, const int* numVertices, const OdGePoint2d* vertices);
846
854 virtual void setViewportClipRegion(int numContours, int const* numVertices, OdGsDCPoint const* vertices);
855
856 bool isDependentViewportView() const;
857 bool isDependentGeometryView() const;
858 bool isHelperView() const;
859
860
864 const OdGsBaseModule *getGsModulePtr() const;
865
873
880
888 virtual bool pointInViewport(const OdGePoint2d& screenPoint) const;
889
895 virtual void setClearColor(ClearColor color);
896
897
898
902 virtual void invalidate();
903
909 virtual void invalidate(const OdGsDCRect &rect);
910
922 virtual void select(const OdGsDCPoint* points, int numPoints, OdGsSelectionReactor* pReactor,
924
940 virtual bool add(OdGiDrawable* sceneGraph, OdGsModel* model);
941
945 virtual int numRootDrawables() const;
946
952 virtual OdDbStub* rootDrawableIdAt(int i, OdGsModelPtr* pModelReturn = 0) const;
953
959 virtual OdGiDrawablePtr rootDrawableAt(int i, OdGsModelPtr* pModelReturn = 0) const;
960
966 virtual bool erase(OdGiDrawable* sceneGraph);
967
973 virtual void eraseAll();
974
975
976
982 virtual OdGsModel *getModel(const OdGiDrawable *pDrawable) const;
983
988
1000 virtual bool isValid() const;
1001
1013 virtual void getNumPixelsInUnitSquare(const OdGePoint3d& givenWorldpt,
1014 OdGePoint2d& pixelArea, bool includePerspective = true) const;
1015
1023 virtual void setBackground(OdDbStub *backgroundId);
1024
1030 virtual OdDbStub *background() const;
1031
1039 virtual void setVisualStyle(OdDbStub *visualStyleId);
1040
1046 virtual OdDbStub *visualStyle() const;
1047
1056
1067 virtual bool visualStyle(OdGiVisualStyle &vs) const;
1068
1077 virtual void enableDefaultLighting(bool bEnable, DefaultLightingType lightType = kTwoLights);
1078
1086 bool defaultLightingEnabled() const;
1087
1100
1101 // OdGsViewImpl methods
1102
1108 static OdGsViewImpl* safeCast(OdGsView* pView);
1109
1115 static const OdGsViewImpl* safeCast(const OdGsView* pView);
1116
1123
1131 bool isValidViewportId(const OdUInt32 vpId) const;
1132
1133 //NS TODO: rename to viewportObjectId()
1137 OdDbStub* getViewportObjectId() const { return m_viewInfo.viewportObjectId; }
1138
1143
1148
1152 OdDbStub* annotationScaleId() const;
1153
1158
1167 virtual bool viewExtents(OdGeBoundBlock3d& extents) const = 0;
1168
1169 // Own methods
1170
1171
1182 virtual void select(const OdGePoint2d* aPtDc, int numPoints, OdGsSelectionReactor* pReactor,
1184
1185 bool isSnapping() const;
1186 void setSnapping(bool val);
1187 bool isRegenOnDrawForbidden() const;
1188 void setRegenOnDrawForbidden(bool val);
1189 bool isAccumulateVpChanges() const;
1190
1194 virtual void clearLinetypeCache() = 0;
1195
1200
1201 // Legacy plot modes (#12611)
1202 // Legacy Wireframe
1203 virtual bool isSupportLegacyWireframeMode() const;
1204 virtual bool isLegacyWireframeMode() const;
1205 virtual void setLegacyWireframeMode(bool bSet);
1206 // Legacy Hidden
1207 virtual bool isSupportLegacyHiddenMode() const;
1208 virtual bool isLegacyHiddenMode() const;
1209 virtual void setLegacyHiddenMode(bool bSet);
1210
1216 bool isSupportPlotStyles() const;
1217 // Transparencies plotting
1218
1224 virtual bool isPlotTransparency() const;
1225
1230 virtual void setPlotTransparency(bool bSet);
1231
1235 OdUInt32 frozenLayers() const { return m_frozenLayers.size(); }
1236
1247
1255 bool isLayerVisible(OdDbStub* layerId) const;
1256
1263
1271
1277
1282 double lineweightToPixels(double lineweight) const;
1283
1289 void screenRect(OdGsDCPoint &lowerLeft, OdGsDCPoint &upperRight) const;
1290
1296 void screenRect(OdGePoint2d &lowerLeft, OdGePoint2d &upperRight) const;
1297
1302 void screenRectNorm(OdGsDCRect& normalizedRect) const;
1303
1309 void viewportDcCorners(OdGePoint2d& lower_left, OdGePoint2d& upper_right) const;
1310
1321 bool doPerspectivePt(OdGePoint3d& point) const;
1322
1334
1338 const OdGeMatrix3d& eyeToWorldMatrix() const;
1339
1343 const OdGeMatrix3d& worldToEyeMatrix() const;
1344
1353
1365
1374
1387
1399
1404
1405 OdGsOverlayId extentsToPixels(OdGsDCRect &rc, const OdGeExtents3d& worldExt, const OdGsBaseModel *pModel, OdDb::LineWeight extendByLineweight = OdDb::kLnWt000) const;
1406 virtual void invalidate(const OdGeExtents3d& worldExt, const OdGsBaseModel *pModel, OdDb::LineWeight extendByLineweight = OdDb::kLnWt000);
1407
1414 void invalidate(const OdGsUpdateExtents& extents, const OdGsBaseModel *pModel);
1415
1422
1430
1431 bool isCompletelyVisible() const;
1432 void setCompletelyVisible(bool val);
1433
1452 void setInversion(bool invertedX, bool invertedY);
1453
1458
1462 double focalLength() const;
1463
1467 const OdGeVector3d& eyeVector() const { return m_eyeVector; }
1468
1472 const OdGeVector3d& xVector() const { return m_xVector; }
1473
1477 const OdGeVector3d& getUpVector() const { return m_upVector; }
1478
1485
1494
1515 virtual double getDeviation(const OdGiDeviationType deviationType,
1516 const OdGePoint3d& pointOnCurve, bool bRecalculate = false) const;
1517
1522
1526 int cachedDrawables() const { return m_nCachedDrawables!=0; }
1527
1528 // Local viewport ID section
1535 {
1536 return m_localId.localViewportId(pModel);
1537 }
1538 virtual bool isLocalViewportIdCompatible(const OdGsViewImpl *pView) const;
1540 {
1541 return m_localId;
1542 }
1543
1549 virtual bool isViewRegenerated() const;
1550
1551 const OdGePoint2d& center() const;
1553
1558protected:
1559 void getUnrotatedFieldSize(double& fieldWidth, double& fieldHeight) const;
1560 void getClippingPlanes(double& nearClipPlaneDist, double& farClipPlaneDist
1561 , OdGsOverlayId overlayId, OdUInt32 projectionFlags) const;
1562 OdGeMatrix3d projectionMatrix(double nearClipPlaneDist, double farClipPlaneDist
1563 , OdUInt32 projectionFlags) const;
1564 OdGeMatrix3d eyeToScreenMatrix(double nearClipPlaneDist, double farClipPlaneDist
1565 , OdGsOverlayId overlayId) const;
1566 OdGeMatrix3d screenMatrix(double nearClipPlaneDist, double farClipPlaneDist) const;
1567
1576 virtual bool sceneDept(double& zNear, double& zFar, OdGsOverlayId nOverlay) const;
1577 // This is old version of sceneDept overrideable method, which is still provided for compatibility with
1578 // old vectorizers. Don't override it in new vectorizers, use new sceneDept method version even if
1579 // your vectorizer doesn't support overlay buffers. This method will be removed in one of next ODA Platform versions.
1580 virtual bool sceneDept(double& zNear, double& zFar) const;
1581
1592 virtual bool usesDept(double* pMinDeptSupported = 0, double* pMaxDeptSupported = 0) const;
1593protected:
1598
1603
1604 virtual void updateViewProps(bool bFullUpdate = true);
1605
1606 inline bool isCheckValid() const;
1607 inline void setCheckValid(bool bValue) const;
1608 inline bool isInvalid() const;
1609 inline void setInvalid(bool bValue) const;
1610 inline void setPerspectiveEnabled(bool bValue) const;
1611 inline void setAccumulateVpChanges( bool bSet );
1612public:
1618 inline bool isNonRectClipped() const;
1619
1625 inline bool hasLweights() const { return !m_lweights.empty() || !m_lweights2x.empty(); }
1626
1632 inline OdUInt32 numLweights() const { return (m_lweights2x.empty()) ? m_lweights.size() : m_lweights2x.size(); }
1633
1639 inline OdUInt32 getLweight(int nLineweight) const { return (m_lweights2x.empty()) ? OdUInt32(m_lweights[nLineweight]) : OdUInt32(m_lweights2x[nLineweight]); }
1640
1644 inline const OdUInt8Array &getLweightsEnum() const { return m_lweights; }
1645
1649 inline const OdUInt16Array &getLweightsEnum2() const { return m_lweights2x; }
1650
1654 const OdGePoint2d& dcScreenMin() const { return m_dcScreenMin; }
1655
1659 const OdGePoint2d& dcScreenMax() const { return m_dcScreenMax; }
1660
1664 const OdGePoint2d& dcLowerLeft() const { return m_dcLowerLeft; }
1665
1669 const OdGePoint2d& dcUpperRight() const { return m_dcUpperRight; }
1670
1675
1682 static double lensLengthToFOV(double lensLength);
1691 static double lensLengthFromFOV(double fovAngle);
1692
1699
1705 virtual void registerOverlay(const OdGsModel *pModel);
1706
1712 virtual void unregisterOverlay(const OdGsModel *pModel);
1713
1721protected:
1730
1731public:
1750 double calcDeviation(const OdGiDeviationType type, const OdGePoint3d& pt) const;
1751
1752 // Viewport properties (backgrounds, render settings, visual styles) management
1753
1758
1767
1774
1775 // Printing support methods
1776
1782
1789 short viewportRotation() const;
1790
1796 inline bool isRotated() const;
1797
1831 double unrotatedFieldHeight() const;
1832
1866 double unrotatedFieldWidth() const;
1867
1871 double actualFieldWidth() const;
1875 double actualFieldHeight() const;
1876
1877 // Primitives culling routines
1878
1894 virtual void initCullingVolume();
1921 virtual bool isCullingVolumeInitialized() const;
1959 virtual void cullingVolumeTransformBy(const OdGeMatrix3d &xfm);
1960
1967 virtual void setViewport3dClipping(const OdGiClipBoundary* pBoundary, const OdGiAbstractClipBoundary* pClipInfo = NULL);
1973 virtual const OdGiClipBoundary *viewport3dClipping(const OdGiAbstractClipBoundary** ppClipInfo = NULL) const;
1981 bool hasViewport3dClipping() const;
1982
1990 virtual bool saveViewState(OdGsFiler *pFiler) const;
1991
1999 virtual bool loadViewState(OdGsFiler *pFiler);
2000
2008 virtual bool saveClientViewState(OdGsFiler *pFiler) const;
2009
2017 virtual bool loadClientViewState(OdGsFiler *pFiler);
2018
2023
2029 virtual void enableAntiAliasing(OdUInt32 nMode);
2030
2034 virtual OdUInt32 antiAliasingMode() const;
2035
2041 virtual void enableSSAO(bool bEnable) ODRX_OVERRIDE;
2042
2048 virtual bool ssaoMode() const ODRX_OVERRIDE;
2049
2055 void addClippingShape(const OdSiShape*);
2056
2062 void removeClippingShape(const OdSiShape*);
2063
2068
2075
2082 virtual bool isShowFrozenLayers();
2083
2089 virtual void setShowFrozenLayers( bool bSet );
2090
2091private:
2092 void setExtents(OdGsOverlayId nOverlay, const OdGeExtents3d& ext, bool bAdd, bool bVisible = true);
2093 void getExtents(OdGsOverlayId nOverlay, OdGeExtents3d& ext, bool bVisible = false) const;
2094
2095 void addInvalidRectThisView(OdGsOverlayId nOverlay, const OdGsDCRect& rc, const OdGsDCRect& vpRc);
2096
2097private:
2098 //DOM-IGNORE-BEGIN
2099
2100 enum EGsViewImplFlags
2101 {
2102 kFirstViewImplFlag = 1,
2103
2104 kInvalid = kFirstViewImplFlag << 0, // device surface entirely invalid
2105 kCheckValid = kFirstViewImplFlag << 1, // device surface entirely valid
2106 kBorderVisible = kFirstViewImplFlag << 2,
2107 kDoFrontClip = kFirstViewImplFlag << 3,
2108 kDoBackClip = kFirstViewImplFlag << 4,
2109 kPerspectiveEnabled = kFirstViewImplFlag << 5,
2110 kHidden = kFirstViewImplFlag << 6, // view is hidden
2111 kTransparentClearColor = kFirstViewImplFlag << 7,
2112 kDevBgClearColor = kFirstViewImplFlag << 8,
2113 kEyeToWorldValid = kFirstViewImplFlag << 9,
2114 kWorldToEyeValid = kFirstViewImplFlag << 10,
2115 kSnapping = kFirstViewImplFlag << 11,
2116 kForbidDrawableRegenDraw = kFirstViewImplFlag << 12,
2117 kDepViewInside = kFirstViewImplFlag << 13,
2118 kLegacyWireframe = kFirstViewImplFlag << 14,
2119 // there are two modes with hidden lines removed:
2120 // - normal, set by SHADEMODE command in CAD for display and
2121 // represented by 'Hidden' visual style in shade plot viewport/layout props for printing, and
2122 // - legacy, set by HIDE command in CAD for display and
2123 // according to 'OdDbViewport/OdDbPlotSettings::kHidden' shade plot for printing;
2124 // they both use 'kHiddenLine' render mode, but have some differences, e.g. in plot style usage;
2125 // this flag is to distinguish these two cases
2126 kLegacyHidden = kFirstViewImplFlag << 15,
2127 kPlotTransparency = kFirstViewImplFlag << 16,
2128 kAccumulateVpChanges = kFirstViewImplFlag << 17,
2129 kDefaultLightingEnabled = kFirstViewImplFlag << 18,
2130 kSSAOEnabled = kFirstViewImplFlag << 19,
2131 kFrozenLayersInViewExt = kFirstViewImplFlag << 20,
2132 kShowFrozenLayers = kFirstViewImplFlag << 21
2133 };
2134protected:
2136protected: //FELIX_CHANGE
2139
2151
2156
2165
2176
2177 double m_deviation[5];
2178
2181
2188
2189protected:
2216 {
2217 public:
2219 void setSceneDeptInvalid(OdGsOverlayId nOverlay, bool bSet) const;
2221 bool hasInvalidRects(OdUInt32 nOverlays = kGsAllOverlays) const;
2222 };
2224
2225 //DOM-IGNORE-END
2226protected:
2232 // Reserved pointer for internal use (binary incompatible changes), do not delete.
2234
2235 // Made protected for access in OdGiViewport methods
2237
2239
2241
2244
2245 friend class GsViewImplHelper;
2248 friend class OdGsBaseModule;
2250};
2251
2253{
2255}
2256
2258{
2260}
2261
2263{
2264 return GETBIT(m_viewInfo.viewportFlags, OdGsClientViewInfo::kHelperView);
2265}
2266
2268{
2269 return m_pModule.get();
2270}
2271
2273{
2274 return m_viewInfo.contextColors.get();
2275}
2276
2278{
2279 m_viewInfo.contextColors = pColors;
2280 invalidate();
2281}
2282
2284{
2286}
2287
2289{
2290 SETBIT(m_gsViewImplFlags, kFrozenLayersInViewExt, bEnable);
2291}
2292
2294{
2295 return GETBIT(m_gsViewImplFlags, kFrozenLayersInViewExt);
2296}
2297
2299{
2300 return GETBIT(m_gsViewImplFlags, kCheckValid);
2301}
2302
2303inline void OdGsViewImpl::setCheckValid(bool bValue) const
2304{
2305 SETBIT(m_gsViewImplFlags, kCheckValid, bValue);
2306}
2307
2308inline bool OdGsViewImpl::isInvalid() const
2309{
2310 return GETBIT(m_gsViewImplFlags, kInvalid);
2311}
2312
2313inline void OdGsViewImpl::setInvalid(bool bValue) const
2314{
2315 SETBIT(m_gsViewImplFlags, kInvalid, bValue);
2316}
2317
2318inline void OdGsViewImpl::setPerspectiveEnabled(bool bValue) const
2319{
2320 SETBIT(m_gsViewImplFlags, kPerspectiveEnabled, bValue);
2321 if (bValue != isPerspective())
2322 m_overlayData.setWorldToDeviceInvalid();
2323}
2324
2326{
2327 return GETBIT(m_gsViewImplFlags, kDefaultLightingEnabled);
2328}
2329
2334
2336{
2337 if (antiAliasingMode() != nMode)
2338 {
2339 m_antiAliasingMode = nMode;
2340 invalidate();
2341 }
2342}
2343
2345{
2346 return m_antiAliasingMode;
2347}
2348
2349inline void OdGsViewImpl::enableSSAO(bool bEnable)
2350{
2351 if (ssaoMode() != bEnable)
2352 {
2353 SETBIT(m_gsViewImplFlags, kSSAOEnabled, bEnable);
2354 invalidate();
2355 }
2356}
2357
2358inline bool OdGsViewImpl::ssaoMode() const
2359{
2360 return GETBIT(m_gsViewImplFlags, kSSAOEnabled);
2361}
2362
2364{
2365 return m_nrcCounts.size() != 0;
2366}
2367
2368inline bool OdGsViewImpl::isRotated() const
2369{
2370 short rotation = viewportRotation();
2371 return rotation == 90 || rotation == 270;
2372}
2373
2374inline void OdGsViewImpl::invalidate(const OdGsUpdateExtents& extents, const OdGsBaseModel *pModel)
2375{
2376 invalidate(extents.getExtents(), pModel, extents.getLineweight());
2377}
2378
2380{
2381 if(!GETBIT(m_gsViewImplFlags, kEyeToWorldValid))
2382 {
2383 m_eyeToWorld.setCoordSystem(target(), xVector(), upVector(), eyeVector());
2384 SETBIT(m_gsViewImplFlags, kEyeToWorldValid, true);
2385 }
2386 return m_eyeToWorld;
2387}
2388
2390{
2391 if(!GETBIT(m_gsViewImplFlags, kWorldToEyeValid))
2392 {
2394 SETBIT(m_gsViewImplFlags, kWorldToEyeValid, true);
2395 }
2396 return m_worldToEye;
2397}
2398
2400{
2401 return OdSmartPtr<OdGsViewImpl>(pView).get();
2402}
2403
2405{
2406 return OdSmartPtr<OdGsViewImpl>(pView).get();
2407}
2408
2409inline bool OdGsViewImpl::isSnapping() const
2410{
2411 return GETBIT(m_gsViewImplFlags, kSnapping);
2412}
2413
2414inline void OdGsViewImpl::setSnapping(bool val)
2415{
2416 SETBIT(m_gsViewImplFlags, kSnapping, val);
2417}
2418
2420{
2421 return GETBIT(m_gsViewImplFlags, kForbidDrawableRegenDraw);
2422}
2423
2425{
2426 SETBIT(m_gsViewImplFlags, kForbidDrawableRegenDraw, val);
2427}
2428
2430{
2431 return GETBIT(m_gsViewImplFlags, kAccumulateVpChanges);
2432}
2433
2435{
2436 SETBIT( m_gsViewImplFlags, kAccumulateVpChanges, bSet );
2437}
2438
2440{
2441 return GETBIT(m_gsViewImplFlags, kDepViewInside);
2442}
2443
2445{
2446 SETBIT(m_gsViewImplFlags, kDepViewInside, val);
2447}
2448
2450{
2451 return GETBIT(m_gsViewImplFlags, kShowFrozenLayers);
2452}
2453
2455{
2456 SETBIT(m_gsViewImplFlags, kShowFrozenLayers, bSet);
2457}
2458
2463
2465{
2466 return !m_p3dClip.isNull();
2467}
2468
2470{
2471 return m_fieldWidth;
2472}
2473
2475{
2476 return m_fieldHeight;
2477}
2478
2480{
2481 if (!m_clippingShapes.contains(p))
2482 m_clippingShapes.append(p);
2483}
2484
2486{
2488 if (m_clippingShapes.find(p, i, 0))
2489 m_clippingShapes.removeAt(i);
2490}
2491
2493{
2494 return m_clippingShapes;
2495}
2496
2501
2502GS_TOOLKIT_EXPORT double calcFocalLength(double lensLength, double fieldWidth, double fieldHeight);
2503
2504#include "TD_PackPop.h"
2505
2506#endif // ODGSVIEWIMPL_INC
OdSmartPtr< OdGiRasterImage > OdGiRasterImagePtr
Definition DbLayout.h:36
OdArray< OdDbStub *, OdMemoryAllocator< OdDbStub * > > OdDbStubPtrArray
true
scale
false
Definition DimVarDefs.h:165
OdArray< OdGePoint2d, OdMemoryAllocator< OdGePoint2d > > OdGePoint2dArray
Definition GeGbl.h:45
OdSmartPtr< OdGiDrawable > OdGiDrawablePtr
OdGiRegenType
OdGiDeviationType
OdArray< OdGsModel *, OdMemoryAllocator< OdGsModel * > > OdGsModelArray
Definition Gs.h:79
OdSmartPtr< OdGsView > OdGsViewPtr
Definition Gs.h:67
OdSmartPtr< OdGsModel > OdGsModelPtr
Definition Gs.h:74
OdSmartPtr< OdGsBaseModule > OdGsBaseModulePtr
OdSmartPtr< OdGsCullingVolume > OdGsCullingVolumePtr
OdArray< OdGsDCPoint, OdMemoryAllocator< OdGsDCPoint > > OdGsDCPointArray
OdArray< OdGsDCRect, OdMemoryAllocator< OdGsDCRect > > OdGsDCRectArray
OdArray< DrawableHolder > DrawableHolderArray
#define GS_TOOLKIT_EXPORT
Definition GsExport.h:37
OdGsOverlayId
@ kGsMainOverlay
@ kGsAllOverlays
OdSmartPtr< OdGsProperties > OdGsPropertiesPtr
GS_TOOLKIT_EXPORT double calcFocalLength(double lensLength, double fieldWidth, double fieldHeight)
OdArray< const OdSiShape *, OdMemoryAllocator< const OdSiShape * > > OdSiShapeConstPtrArray
Definition GsViewImpl.h:54
bool isInvalid(const ViewPropsArray &props)
OdArray< int, OdMemoryAllocator< int > > OdIntArray
Definition IntArray.h:35
#define ODCOLORREF
unsigned int OdUInt32
unsigned short OdUInt16
unsigned char OdUInt8
#define ODRX_OVERRIDE
ptrdiff_t OdIntPtr
#define SETBIT(flags, bit, value)
Definition OdaDefs.h:516
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
OdArray< OdUInt16, OdMemoryAllocator< OdUInt16 > > OdUInt16Array
Definition UInt16Array.h:34
OdArray< OdUInt8, OdMemoryAllocator< OdUInt8 > > OdUInt8Array
Definition UInt8Array.h:35
typename OdMemoryAllocator< const OdSiShape * >::size_type size_type
Definition OdArray.h:837
OdGeMatrix3d inverse() const
const OdGeExtents3d & getExtents() const
OdDb::LineWeight getLineweight() const
Definition Gs.h:141
virtual void enableSSAO(bool bEnable)=0
virtual void invalidate()=0
ClearColor
Definition Gs.h:1056
virtual OdUInt32 antiAliasingMode() const =0
DefaultLightingType
Definition Gs.h:189
@ kTwoLights
Definition Gs.h:191
SelectionMode
Definition Gs.h:174
@ kCrossing
Definition Gs.h:176
virtual void enableAntiAliasing(OdUInt32 nMode)=0
virtual bool ssaoMode() const =0
RenderMode
Definition Gs.h:149
@ k2DOptimized
Definition Gs.h:151
Projection
Definition Gs.h:165
@ kParallel
Definition Gs.h:166
bool hasInvalidRects(OdUInt32 nOverlays=kGsAllOverlays) const
void clearInvalidRects(OdUInt32 nOverlays=kGsAllOverlays)
void setSceneDeptInvalid(OdGsOverlayId nOverlay, bool bSet) const
virtual void setShowFrozenLayers(bool bSet)
double m_fieldHeight
OdUInt32 viewportId() const
virtual void endInteractivity()
const OdGePoint2d & dcScreenMin() const
OdUInt8Array m_lweights
virtual double interactivityFrameRate() const
virtual void dolly(const OdGeVector3d &dollyVector)
virtual void invalidateCachedViewportGeometry()
virtual bool exceededBounds()
OdGePoint2d m_center
double m_dInteractivityFrameRate
void setPerspectiveEnabled(bool bValue) const
virtual OdGiRegenType getRegenType() const
virtual bool isViewRegenerated() const
virtual bool saveViewState(OdGsFiler *pFiler) const
virtual void setEnableBackClip(bool enable)
OdGsClientViewInfo m_viewInfo
virtual void initLights(OdRxIterator *pLightsIterator)
OdDbStubPtrArray m_frozenLayersDiff
bool hasLweights() const
virtual bool isShowFrozenLayers()
const OdGeMatrix3d & eyeToWorldMatrix() const
virtual double getDeviation(const OdGiDeviationType deviationType, const OdGePoint3d &pointOnCurve, bool bRecalculate=false) const
OdGePoint2d m_dcUpperRight
ODCOLORREF m_borderColor
virtual bool visualStyle(OdGiVisualStyle &vs) const
virtual void setAlternateLinetypeScaleMultiplier(double linetypeAlternateScaleMultiplier)
bool isDependentViewportView() const
double windowAspect() const
virtual OdGePoint3d position() const
virtual bool isPlotTransparency() const
virtual OdGePoint3d target() const
void setCenter(const OdGePoint2d &center)
virtual OdGeMatrix3d screenMatrix() const
virtual bool pointInView(const OdGePoint3d &pt) const
OdDbStub * getViewportObjectId() const
bool isLayerVisible(OdDbStub *layerId) const
virtual void getNumPixelsInUnitSquare(const OdGePoint3d &givenWorldpt, OdGePoint2d &pixelArea, bool includePerspective=true) const
OdUInt32 m_antiAliasingMode
const OdGiContextualColors * contextualColors() const
bool isSupportPlotStyles() const
OdGeMatrix3d m_worldToEye
bool m_bInInteractivityMode
OdGeMatrix3d eyeToScreenMatrix(double nearClipPlaneDist, double farClipPlaneDist, OdGsOverlayId overlayId) const
virtual OdDbStub * background() const
virtual OdGeMatrix3d objectToDeviceMatrix() const
DefaultLightingType m_defaultLightingType
virtual bool isSupportLegacyHiddenMode() const
void setContextualColors(OdGiContextualColors *pColors)
virtual OdDbStub * rootDrawableIdAt(int i, OdGsModelPtr *pModelReturn=0) const
OdGiDrawablePtr drawableAt(DrawableHolder &drawableHolder)
void screenRectNorm(OdGsDCRect &normalizedRect) const
OdUInt32 m_giViewportId
OdGsDCRectArray invalidRects(OdGsOverlayId nOverlay=kGsMainOverlay) const
virtual bool isValid() const
virtual void setViewport(const OdGsDCRect &screenRect)
const OdGePoint2d & dcScreenMax() const
virtual void cullingVolumeTransformBy(const OdGeMatrix3d &xfm)
virtual void flush()
OdGiRegenType m_regenerationType
friend class GsViewImplHelper
virtual void propagateLayersChanges()
virtual void clearFrozenLayers()
OdGePoint3d m_position
virtual void roll(double rollAngle)
virtual void zoomExtents(const OdGePoint3d &minPt, const OdGePoint3d &maxPt)
double m_backClipDist
virtual OdGeVector3d upVector() const
virtual void freezeLayer(OdDbStub *layerID)
int m_nCachedDrawables
double getLinetypeGenerationCriteria() const
OdGsOverlayId extentsToPixels(OdGsDCRect &rc, const OdGeExtents3d &worldExt, const OdGsBaseModel *pModel, OdDb::LineWeight extendByLineweight=OdDb::kLnWt000) const
OdGeMatrix3d projectionMatrix(double nearClipPlaneDist, double farClipPlaneDist, OdUInt32 projectionFlags) const
virtual void setLineweightEnum(int numLineweights, const OdUInt8 *lineweights, const OdUInt16 *altSourceLwds)
virtual OdGsViewPtr cloneView(bool cloneViewParameters=true, bool cloneGeometry=false)
OdGeMatrix3d perspectiveMatrix() const
virtual void viewParameters(OdGsView *pView) const
virtual void show()
virtual bool cullingVolumeIntersectWithOpt(const OdGsCullingPrimitive &prim) const
double actualFieldHeight() const
void invalidateRegion(const OdGiPathNode &path)
virtual void invalidate(const OdGeExtents3d &worldExt, const OdGsBaseModel *pModel, OdDb::LineWeight extendByLineweight=OdDb::kLnWt000)
ODRX_DECLARE_MEMBERS(OdGsViewImpl)
OdGsPropertiesPtr getViewportPropertiesRoot() const
int lineweightToPixels(OdDb::LineWeight lineweight) const
double focalLength() const
void screenRect(OdGsDCPoint &lowerLeft, OdGsDCPoint &upperRight) const
virtual void select(const OdGsDCPoint *points, int numPoints, OdGsSelectionReactor *pReactor, SelectionMode mode=kCrossing)
virtual bool isPerspective() const
bool m_screenInvertedY
virtual void setLensLength(double lensLength)
virtual void invalidate(const OdGsDCRect &rect)
OdGePoint3d focusPoint() const
OdUInt16Array m_lweights2x
virtual double lineweightToDcScale() const
virtual void hide()
double m_linetypeAlternateScaleMultiplier
virtual const OdGiClipBoundary * viewport3dClipping(const OdGiAbstractClipBoundary **ppClipInfo=NULL) const
virtual void orbit(double xOrbit, double yOrbit)
double linetypeAlternateScaleMultiplier() const
virtual void getViewport(OdGsDCRect &screenRect) const
OdGePoint2d m_dcScreenMax
virtual OdUInt32 antiAliasingMode() const
double actualFieldWidth() const
void setInversion(bool invertedX, bool invertedY)
double m_deviation[5]
virtual double lensLength() const
void setInvalid(bool bValue) const
void setRegenOnDrawForbidden(bool val)
virtual void setLegacyWireframeMode(bool bSet)
virtual void select(const OdGePoint2d *aPtDc, int numPoints, OdGsSelectionReactor *pReactor, SelectionMode mode=kCrossing)=0
virtual bool isVisible()
virtual bool add(OdGiDrawable *sceneGraph, OdGsModel *model)
ClearColor clearColor() const
const OdGsBaseModule * getGsModulePtr() const
virtual OdGsModelArray getModelList() const
const OdUInt16Array & getLweightsEnum2() const
OdDbStubPtrArray m_lastFrozenLayers
virtual void enableStereo(bool enabled)
virtual void getViewportBorderProperties(ODCOLORREF &color, int &width) const
virtual void zoom(double zoomFactor)
double m_lineweightToDcScale
OdGsCullingVolumePtr m_pCullingVolume
OdGeVector3d m_xVector
OdGsViewLocalId m_localId
OdSiShapeConstPtrArray m_clippingShapes
virtual void setLineweightToDcScale(double scale)
virtual void updateViewProps(bool bFullUpdate=true)
OdGeMatrix3d m_eyeToWorld
virtual RenderMode mode() const
virtual OdGeMatrix3d projectionMatrix() const
OdGeVector3d m_eyeVector
virtual void viewportClipRegion(OdIntArray &counts, OdGsDCPointArray &dcPts) const
OdUInt32 getLweight(int nLineweight) const
friend class OdGsBaseVectorizer
void removeClippingShape(const OdSiShape *)
virtual void init(OdGsBaseVectorizeDevice *pDevice, const OdGsClientViewInfo *pViewInfo=0, bool enableLayerVisibilityPerView=false)
virtual bool isSupportLegacyWireframeMode() const
const OdGeMatrix3d & worldToEyeMatrix() const
OdGiDrawablePtr m_pViewportTrans
OdGePoint2dArray m_nrcPoints
virtual void setLinetypeScaleMultiplier(double linetypeScaleMultiplier)
const OdGeMatrix3d & rotationMatrix() const
OdGePoint2d m_dcScreenMin
virtual bool loadClientViewState(OdGsFiler *pFiler)
void setCompletelyVisible(bool val)
virtual void dolly(double xDolly, double yDolly, double zDolly)
virtual int numRootDrawables() const
virtual bool usesDept(double *pMinDeptSupported=0, double *pMaxDeptSupported=0) const
OdGePoint2d m_dcLowerLeft
virtual OdGsDevice * device() const
void screenRect(OdGePoint2d &lowerLeft, OdGePoint2d &upperRight) const
OdDbStub * m_pVisualStyleId
virtual void viewportClipRegion(OdIntArray &counts, OdGePoint2dArray &vertices) const
const OdSiShapeConstPtrArray & clippingShapes() const
bool hasViewport3dClipping() const
bool defaultLightingEnabled() const
virtual void pan(double xPan, double yPan)
bool isViewportOnScreen() const
virtual void setVisualStyle(OdDbStub *visualStyleId)
double lineweightToPixels(double lineweight) const
virtual bool isLocalViewportIdCompatible(const OdGsViewImpl *pView) const
void onWorldToEyeChanged()
const OdGePoint2d & center() const
virtual void setClearColor(ClearColor color)
virtual void setViewport(const OdGsDCRectDouble &screenRec)
friend class OdGsBaseVectorizeDevice
virtual bool loadViewState(OdGsFiler *pFiler)
void setCheckValid(bool bValue) const
virtual void invalidate()
virtual double frontClip() const
OdDbStub * m_pBackgroundId
void getClippingPlanes(double &nearClipPlaneDist, double &farClipPlaneDist, OdGsOverlayId overlayId, OdUInt32 projectionFlags) const
static double lensLengthFromFOV(double fovAngle)
double getLinetypeScaleMultiplier() const
virtual bool isLegacyHiddenMode() const
const OdUInt8Array & getLweightsEnum() const
OdGeMatrix3d projectionMatrix(OdUInt32 nIncludes, OdGsOverlayId nOverlay=kGsMainOverlay) const
bool isAccumulateVpChanges() const
friend class OdGsBaseModule
GsViewOverlayDataContainer m_overlayData
OdGeMatrix3d worldToDeviceMatrix(OdGsOverlayId nOverlay) const
double calcDeviation(const OdGiDeviationType type, const OdGePoint3d &pt) const
OdUInt32 frozenLayers() const
virtual double fieldWidth() const
bool doPerspectivePt(OdGePoint3d &point) const
virtual void initCullingVolume()
double m_lensLength
virtual void setStereoParameters(double magnitude, double parallax)
DefaultLightingType defaultLightingType() const
virtual bool sceneDept(double &zNear, double &zFar, OdGsOverlayId nOverlay) const
double m_linetypeScaleMultiplier
bool isInvalid() const
virtual void getViewport(OdGePoint2d &lowerLeft, OdGePoint2d &upperRight) const
virtual bool isStereoEnabled() const
virtual bool isCullingVolumeInitialized() const
bool isRegenOnDrawForbidden() const
OdGsBaseVectorizeDevice * m_pDevice
OdSharedPtr< OdGiClipBoundaryWithAbstractData > m_p3dClip
bool isHelperView() const
bool isFrozenLayersVisibilityIncludedInViewExtents() const
virtual void setBackground(OdDbStub *backgroundId)
virtual bool sceneDept(double &zNear, double &zFar) const
int cachedDrawables() const
virtual bool isBackClipped() const
virtual void setView(const OdGePoint3d &position, const OdGePoint3d &target, const OdGeVector3d &upVector, double fieldWidth, double fieldHeight, Projection projection=kParallel)
virtual OdGeMatrix3d worldToDeviceMatrix() const
virtual bool pointInViewport(const OdGePoint2d &screenPoint) const
virtual void propagateInvalidVpFlag()
virtual void beginInteractivity(double frameRateInHz)
OdIntPtr drawablesFilterFunction() const
OdDbStub * annotationScaleId() const
void getUnrotatedFieldSize(double &fieldWidth, double &fieldHeight) const
virtual bool erase(OdGiDrawable *sceneGraph)
virtual double fieldHeight() const
virtual void zoomWindow(const OdGePoint2d &lowerLeft, const OdGePoint2d &upperRight)
OdGePoint3d m_target
bool setModeOverride(RenderMode mode)
virtual void setBackClip(double distance)
const OdGsBaseVectorizeDevice * baseDevice() const
virtual void getSnapShot(OdGiRasterImagePtr &pImage, const OdGsDCRect &region)
RenderMode m_renderMode
void includeFrozenLayersVisibilityInViewExtents(bool bEnable)
OdIntArray m_nrcCounts
double unrotatedFieldHeight() const
virtual void setVisualStyle(const OdGiVisualStyle &visualStyle)
virtual const OdDbStubPtrArray & getFrozenLayersDiff() const
OdGsCullingVolumePtr cullingVolume() const
virtual OdGsCullingVolume::IntersectionStatus cullingVolumeIntersectWith(const OdGsCullingPrimitive &prim) const
OdRxObjectPtr m_pGsReserved
virtual void setLegacyHiddenMode(bool bSet)
double m_fieldWidth
virtual void eraseAll()
virtual void setViewport(const OdGePoint2d &lowerLeft, const OdGePoint2d &upperRight)
virtual bool extentsInView(const OdGePoint3d &minPt, const OdGePoint3d &maxPt) const
virtual bool isFrontClipped() const
friend class OdGiBaseVectorizerImpl
OdGeMatrix3d objectToDeviceMatrix(OdGsOverlayId nOverlay) const
OdGsBaseModulePtr m_pModule
virtual void enableSSAO(bool bEnable) ODRX_OVERRIDE
virtual void clearLinetypeCache()=0
virtual bool ssaoMode() const ODRX_OVERRIDE
bool updateViewportProperties(OdUInt32 incFlags)
double m_eyeVecLength
virtual void getViewport(OdGsDCRectDouble &screenRec) const
void setSnapping(bool val)
virtual void setViewportClipRegion(int numContours, int const *numVertices, OdGsDCPoint const *vertices)
void frozenLayers(OdDbStubPtrArray &frozenLayers) const
OdGeVector3d m_upVector
virtual void thawLayer(OdDbStub *layerID)
static OdGsViewImpl * safeCast(OdGsView *pView)
short viewportRotation() const
double m_frontClipDist
virtual void setEnableFrontClip(bool enable)
bool m_screenInvertedX
virtual int partialUpdateExtentsEnlargement() const
bool doInversePerspectivePt(OdGePoint3d &point) const
OdGsViewLocalId & getViewLocalId()
OdGiClipBoundaryWithAbstractData * viewport3dClippingObject()
OdDbStubPtrArray m_frozenLayers
bool isValidViewportId(const OdUInt32 vpId) const
virtual bool isLegacyWireframeMode() const
OdGeMatrix3d screenMatrix(double nearClipPlaneDist, double farClipPlaneDist) const
virtual bool isInInteractivity() const
virtual void setMode(RenderMode mode)
bool isSnapping() const
virtual double backClip() const
static double lensLengthToFOV(double lensLength)
OdGsPropertiesPtr m_pProperties
void initDeviation()
virtual void setViewportClipRegion(int numContours, const int *numVertices, const OdGePoint2d *vertices)
virtual void setPlotTransparency(bool bSet)
virtual void setViewport3dClipping(const OdGiClipBoundary *pBoundary, const OdGiAbstractClipBoundary *pClipInfo=NULL)
virtual OdGeMatrix3d viewingMatrix() const
void viewportDcCorners(OdGePoint2d &lower_left, OdGePoint2d &upper_right) const
virtual OdGsModel * getModel(const OdGiDrawable *pDrawable) const
virtual void enableDefaultLighting(bool bEnable, DefaultLightingType lightType=kTwoLights)
void onFinalRelease()
const OdGePoint2d & dcLowerLeft() const
virtual bool isViewportBorderVisible() const
DrawableHolderArray m_drawables
bool isDependentGeometryView() const
bool isCheckValid() const
OdGeMatrix3d eyeToScreenMatrix(OdGsOverlayId nOverlay=kGsMainOverlay) const
void setClippingShapes(const OdSiShapeConstPtrArray &s)
const OdGeVector3d & getUpVector() const
virtual bool saveClientViewState(OdGsFiler *pFiler) const
virtual bool viewExtents(OdGeBoundBlock3d &extents) const =0
virtual void setViewportBorderVisibility(bool visible)
void invalidateCachedViewportGeometry(OdUInt32 mask)
bool isRotated() const
OdGsPropertiesPtr getViewportPropertiesForType(OdGsProperties::PropertiesType type) const
virtual void getStereoParameters(double &magnitude, double &parallax) const
bool isCompletelyVisible() const
void addClippingShape(const OdSiShape *)
OdUInt32 m_gsViewImplFlags
@ kProjectionIncludePerspective
@ kProjectionIncludeRotation
@ kProjectionIncludeAllNoDept
const OdGePoint2d & dcUpperRight() const
OdUInt32 numLweights() const
void setCullingVolume(OdGsCullingVolumePtr newVol)
virtual void enableAntiAliasing(OdUInt32 nMode)
void setAccumulateVpChanges(bool bSet)
virtual OdDbStub * visualStyle() const
OdUInt32 localViewportId(const OdGsBaseModel *pModel) const
double unrotatedFieldWidth() const
virtual void clientViewInfo(OdGsClientViewInfo &viewInfo) const
virtual void registerOverlay(const OdGsModel *pModel)
const OdGeVector3d & xVector() const
virtual void unregisterOverlay(const OdGsModel *pModel)
OdMutexPtr m_mtExtents
virtual void setFrontClip(double distance)
OdGsNode * getRootNode(DrawableHolder &holder)
virtual OdGiDrawablePtr rootDrawableAt(int i, OdGsModelPtr *pModelReturn=0) const
bool isNonRectClipped() const
OdGsBaseVectorizeDevice * baseDevice()
virtual void setViewportBorderProperties(ODCOLORREF color, int width)
const OdGeVector3d & eyeVector() const
virtual double linetypeScaleMultiplier() const
const T * get() const
Definition SmartPtr.h:315
GLint GLenum GLsizei width
Definition gles2_ext.h:110
GLenum GLint GLuint mask
Definition gles2_ext.h:262
GLuint GLsizei GLsizei GLint GLenum * type
Definition gles2_ext.h:274
LineWeight
Definition OdaDefs.h:386
@ kLnWt000
Definition OdaDefs.h:387