CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
TrRndRenderSettings.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 local rendition render settings interface
24
25#ifndef ODTRRNDRENDERSETTINGS
26#define ODTRRNDRENDERSETTINGS
27
28#include "TD_PackPush.h"
29
31#include "../TrVisDefs.h"
33
34// Forward declarations
35class OdGsFiler;
37
42
47
52
57{
58 public:
60};
61
68
73{
74 protected:
75 template <OdUInt32 nElems>
76 class BitSet {
77 protected:
79 public:
81 { clear(); }
82 void clear() { for (OdUInt32 n = 0; n < nElems; n++) m_flags[n] = 0; }
83 OdUInt8 *getPtr() { return m_flags; } const OdUInt8 *getPtr() const { return m_flags; }
84 void set(OdUInt32 nFlag) { SETBIT_1(m_flags[nFlag >> 3], 1 << (nFlag & 7)); }
85 void reset(OdUInt32 nFlag) { SETBIT_0(m_flags[nFlag >> 3], 1 << (nFlag & 7)); }
86 void set(OdUInt32 nFlag, bool bSet) { SETBIT(m_flags[nFlag >> 3], 1 << (nFlag & 7), bSet); }
87 bool get(OdUInt32 nFlag) const { return GETBIT(m_flags[nFlag >> 3], 1 << (nFlag & 7)); }
88 };
89 public:
91 {
93 // Elements rendering
94 kDraw3dFacets, // Draw shaded facets
95 kDraw2dFacets, // Draw non-shaded facets
96 kDrawRasterImages, // Draw raster images
97 kDraw3dFacetEdges, // Draw shaded facets wireframe
98 kDraw2dFacetEdges, // Draw non-shaded facets wireframe
99 kDrawIsolines, // Draw isolines
100 kDrawIntersections, // Draw intersection edges
101 kDrawSilhouettes, // Draw silhouettes
102 kDrawDefaultDisable, // Disable rendering of default elements
103 // Display quality settings
104 kDrawOrder, // Draw order enabled
105 kDrawBackground, // Draw backgrounds enabled
106 kDrawLineweights, // Draw lineweights
107 kDrawLighting, // Draw lighting
108 kDrawShadows, // Draw shadows
109 kDrawFog, // Draw fog effect
110 kDrawAntiAliasing, // Draw anti-aliasing effect
111 // Face quality settings
112 kDrawMaterials, // Draw materials
113 kDrawTextures, // Draw textures
114 kFillFacesColor, // Use color to fill faces
115 kFillFacesOpacity, // Override faces opacity
116 kFillFacesTexture, // Use texture to fill faces
117 kFaceNormals, // Use face normals instead vertex normals
118 kPerVertexLighting, // Use per-vertex lighting instead of per-pixel lighting
119 kGoochLighting, // Enable Gooch faces lighting instead of Phong
120 kFlatLighting, // Ignore light sources during Phong lighting calculation
121 kSpecularHighlighting, // Enable specular highlighting
122 kSpecularOverride, // Override specular highlighting for default materials
123 kShadingMaterial, // Use shading material instead of realistic material
124 // Edge quality settings
125 kOverrideEdgesColor, // Use edges color override
126 kOverrideEdgesWidth, // Use edges width override
127 kOverrideEdgesLinetype, // Use edges linetype override
128 kOverrideEdgesLinestyle, // Use edges linestyle override
129 kEdgesOpacity, // Use edges opacity
130 kEdgesCreaseFilter, // Use edges crease angle filtration
131 kEdgesCreaseFilter3d, // Use separate crease angle filtration for 3d object (active only if kEdgesCreaseFilter enabled)
132 kEdgesOverhang, // Use edges extension
133 kEdgesMultipass, // Draw edges multiple times
134 kEdgesJitter, // Use edges jitter effect
135 kDrawTriangulation, // Draw faces triangulation
136 // FX-related
137 kDrawFX, // True in case if render settings represent effect rendering
138 kDisableColorOutput, // Disable color output for FX rendering
139 kDisableVSOverride, // Disable Visual Style overrides for FX rendering
140 kStencilTest, // Modifies stencil buffer processing behavior
141 kStencil3dTest, // Use separate stencil buffer setting for 3d objects (active only if kStencilTest enabled)
142 kDepthTest, // Modifies depth buffer processing behavior
143 kDepth3dTest, // Use separate depth buffer setting for 3d objects (active only if kDepthTest enabled)
144 kOverlappingDecision, // Setup to draw on top of exist geometry with same coordinates
145 kSkipImages, // Skip raster image textures application
146 // Last flag (do not modify manually)
149 };
150 // Settings for render modes
151#define OdTrRndRS_SetFor2dWireframe { kDraw3dFacets, kDraw2dFacets, kDrawRasterImages, kDraw2dFacetEdges, kDrawIsolines, \
152 kDrawOrder, kDrawBackground, kDrawLineweights, kDrawAntiAliasing, \
153 kNullFlag }
154#define OdTrRndRS_SetFor3dWireframe { kDraw2dFacets, kDraw2dFacetEdges, kDrawRasterImages, kDrawIsolines, \
155 kDrawBackground, kDrawLineweights, kDrawAntiAliasing, \
156 kNullFlag }
157#define OdTrRndRS_SetForHiddenLine { kDraw3dFacets, kDrawRasterImages, kDraw3dFacetEdges, kDraw2dFacetEdges, \
158 kDrawBackground, kDrawLineweights, kDrawAntiAliasing, \
159 kFillFacesColor, \
160 kNullFlag }
161#define OdTrRndRS_SetForFlatShaded { kDraw3dFacets, kDraw2dFacets, kDrawRasterImages, \
162 kDrawBackground, kDrawLineweights, kDrawLighting, kDrawShadows, kDrawFog, kDrawAntiAliasing, \
163 kDrawMaterials, kDrawTextures, kFaceNormals, kPerVertexLighting, kSpecularHighlighting, \
164 kNullFlag }
165#define OdTrRndRS_SetForGouraudShaded { kDraw3dFacets, kDraw2dFacets, kDrawRasterImages, \
166 kDrawBackground, kDrawLineweights, kDrawLighting, kDrawShadows, kDrawFog, kDrawAntiAliasing, \
167 kDrawMaterials, kDrawTextures, kPerVertexLighting, kSpecularHighlighting, \
168 kNullFlag }
169#define OdTrRndRS_SetForFlatShadedWithWireframe { kDraw3dFacets, kDraw2dFacets, kDrawRasterImages, kDraw3dFacetEdges, kDraw2dFacetEdges, \
170 kDrawBackground, kDrawLineweights, kDrawLighting, kDrawShadows, kDrawFog, kDrawAntiAliasing, \
171 kDrawMaterials, kDrawTextures, kFaceNormals, kPerVertexLighting, kSpecularHighlighting, \
172 kNullFlag }
173#define OdTrRndRS_SetForGouraudShadedWithWireframe { kDraw3dFacets, kDraw2dFacets, kDrawRasterImages, kDraw3dFacetEdges, kDraw2dFacetEdges, \
174 kDrawBackground, kDrawLineweights, kDrawLighting, kDrawShadows, kDrawFog, kDrawAntiAliasing, \
175 kDrawMaterials, kDrawTextures, kPerVertexLighting, kSpecularHighlighting, \
176 kNullFlag }
177#define OdTrRndRS_FX { kDrawFX, kNullFlag }
186 struct Color
187 {
190 Color(ColorType colorType = kColorBackground, ODCOLORREF colorVal = ODRGBA(0, 0, 0, 255))
191 : m_colorType(colorType), m_colorVal(colorVal) { }
192 };
193 // Draw properties
195 {
196 // Viewport (global)
197 kPropBackgroundColor = 0, // Background viewport color
198 kPropForegroundColor, // Foreground viewport color
199 // Faces
200 kPropFacesFillColor, // Faces fill color override
201 // Edges
202 kPropEdgesColor, // Edges color override
203 // FX-related
204 // . . .
205 // Number of color properties
207 };
209 {
210 // Faces
211 kPropFacesSpecularPower = 0, // Material specular power coefficient override
212 kPropFacesOpacity, // Faces opacity override
213 // Edges
214 kPropEdgesCreaseAngle, // Edge crease filtration angle
216 // FX-related
217 // . . .
218 // Number of floating point properties
220 };
222 {
223 // Viewport (global)
224 kPropDrawFilter = 0, // Inclusive metafiles rendering filter
225 // Faces
226 kPropTextureChannels, // Set of inclusive flags to enable separate material texture channels
227 // Edges
228 kPropEdgesWidth, // Edges lineweight override (in pixels)
229 kPropEdgesLinetype, // Edges linetype override (using OdPs::LineType enum)
230 kPropEdgesLinestyle, // Edges linestyle override (using make_edgesStyle() form)
231 kPropEdgesCreaseFilter, // Edges crease filter (using CreaseFlags enum)
232 kPropEdgesCreaseFilter3d, // Separate edges crease filter for 3d objects (using CreaseFlags enum)
233 kPropEdgesOverhang, // Edges extension length (in pixels)
234 kPropEdgesRepetition, // Number of repetitions per edges rendering (applicable for jitter effect only)
235 kPropEdgesJitterAmount, // Jitter effect amount (in pixels)
236 // FX-related
237 kPropStencilFlags, // Stencil buffer flags (using StencilFlags enum)
238 kPropStencil3dFlags, // Separate stencil buffer flags for 3d objects (using StencilFlags enum)
239 kPropDepthFlags, // Depth buffer flags (using DepthFlags enum)
240 kPropDepth3dFlags, // Separate depth buffer flags for 3d objects (using DepthFlags enum)
241 // Number of integer properties
243 };
244 // Type of multi-pass effect
246 {
247 kMultiPassByObject = 0, // Multi-pass rendering of separate object
248 kMultiPassByScene, // Multi-pass rendering of entire scene
249 kMultiPassInputFX, // Input effect for current rendering stage
250 kMultiPassOutputFX, // Output effect for current rendering stage
251 kMultiPassForSections, // Multi-pass rendering for hardware sections
252
253 // !!! To add multi-pass support for additional geometry types modify geomTypeMultiPass() method implementation also.
254 //kMultiPassFor3dFacets, // Multi-pass rendering of shaded facets // kDraw3dFacets
255 //kMultiPassFor2dFacets, // Multi-pass rendering of non-shaded facets // kDraw2dFacets
256 //kMultiPassForRasterImages, // Multi-pass rendering of raster images // kDrawRasterImages
257 //kMultiPassFor3dFacetEdges, // Multi-pass rendering of shaded facets wireframe // kDraw2dFacetEdges
258 //kMultiPassFor2dFacetEdges, // Multi-pass rendering of non-shaded facets wireframe // kDraw2dFacetEdges
259 //kMultiPassForIsolines, // Multi-pass rendering of isolines // kDrawIsolines
260 kMultiPassForIntersections, // Multi-pass rendering of intersection edges // kDrawIntersections
261 //kMultiPassForSilhouettes, // Multi-pass rendering of silhouettes // kDrawSilhouettes
262
264 };
265 // kPropStencilFlags property settings
276 // kPropDepthFlags property settings
283 // kPropEdgesCreaseFilter property settings
285 {
286 // Most reasonable states:
287 kCreaseFrontEdges = -2, // Completely front edge
288 kCreaseFrontCorners = -1, // Corner edge at front
289 kCreaseBreakEdges = 0, // Break edge (partially at front, partially at back)
290 kCreaseBackCorners = 1, // Corner edge at back
291 kCreaseBackEdges = 2 // Completely back edge
292 };
294 {
295 kCreaseDrawAllEdges = 0x32, // -2, 2 - Draw everything (default)
296 kCreaseDrawFrontEdgesOnly = 0x35, // -2,-1 - Draw front edges only
297 kCreaseDrawFrontEdgesWithCorners = 0x30, // -2, 0 - Draw front edges and front corner edges
298 kCreaseDrawBreakEdgesWithCorners = 0x29, // -1, 1 - Draw break edges and corner edges
299 kCreaseDrawBreakEdgesOnly = 0x00, // 0, 0 - Draw break edges only
300 kCreaseDrawBackEdgesWithCorners = 0x02, // 0, 2 - Draw back edges and back corner edges
301 kCreaseDrawBackEdgesOnly = 0x0A // 1, 2 - Draw back edges only
302 };
304 { return (flags < kCreaseBreakEdges) ? OdUInt32(-flags | 4) : OdUInt32(flags); }
306 { return (CreaseFlags)((GETBIT(flags, 4)) ? -OdInt32(flags & 3) : OdInt32(flags & 3)); }
307 inline static OdUInt32 make_creaseFilter(CreaseFlags frontLimit, CreaseFlags backLimit)
308 { return (creaseFlagEncode(frontLimit) << 3) | creaseFlagEncode(backLimit); }
309 inline static OdUInt32 make_creaseFilter(CreaseFilterDefault defFilter) { return (OdUInt32)defFilter; }
310 inline static CreaseFlags get_creaseFilterFront(OdUInt32 creaseFilter) { return creaseFlagDecode((creaseFilter >> 3) & 7); }
311 inline static CreaseFlags get_creaseFilterBack(OdUInt32 creaseFilter) { return creaseFlagDecode(creaseFilter & 7); }
312 // kPropEdgesLinestyle property setting
314 { return OdUInt32(lesStyle) | (OdUInt32(ljsStyle) << 8); }
315 inline static OdPs::LineEndStyle get_lineEndStyle(OdUInt32 lineStyle) { return (OdPs::LineEndStyle)(lineStyle & 0xFF); }
316 inline static OdPs::LineJoinStyle get_lineJoinStyle(OdUInt32 lineStyle) { return (OdPs::LineJoinStyle)((lineStyle >> 8) & 0xFF); }
317 // kPropTextureChannels property settings
329 // UI properties grouping
340 {
351 UIDefVal() { m_colorProp.reset(); }
352 UIDefVal(bool bDrawFlag) { m_colorProp.reset(); m_drawFlag = bDrawFlag; }
353 UIDefVal(ColorType colorType, ODCOLORREF colorVal = ODRGBA(0, 0, 0, 255)) { m_colorProp.m_colorType = colorType; m_colorProp.m_colorVal = colorVal; }
354 UIDefVal(float floatProp) { m_colorProp.reset(); m_floatProp = floatProp; }
355 UIDefVal(OdInt32 intProp) { m_colorProp.reset(); m_intProp = intProp; }
356 UIDefVal(OdUInt32 uintProp) { m_colorProp.reset(); m_uintProp = uintProp; }
357 };
366 {
370 UIPropRanges(float fltMin, float fltMax) { m_min.m_limFlt = fltMin; m_max.m_limFlt = fltMax; }
371 UIPropRanges(OdInt32 intMin, OdInt32 intMax) { m_min.m_limInt = intMin; m_max.m_limInt = intMax; }
372 UIPropRanges(OdUInt32 uintMin, OdUInt32 uintMax) { m_min.m_limUInt = uintMin; m_max.m_limUInt = uintMax; }
373 };
384 protected:
386 {
387 kRenderModeOverride = (1 << 0), // If set to true render mode settings will be got directly from viewport.
388 kSuppressReactor = (1 << 1), // If set then reactor willn't be called by default for this render settings object.
389 kRSFlagsCopyMask = kRenderModeOverride // Flags which can be copied between render settings.
390 };
391 protected:
392 OdUInt16 m_rsFlags; // Render settings specific flags
393 OdUInt16 m_rsPassId; // User-defined pass Id
394 OdGsView::RenderMode m_renderMode; // Used to set basic parameters.
395 BitSet<kNumFlagRegs> m_nDrawFlags; // Set of bit (draw) flags
396 Color m_colorProps[kNumColorProps]; // Set of color data properties
397 float m_floatProps[kNumFloatProps]; // Set of floating point data properties
398 OdInt32 m_intProps[kNumIntegerProps]; // Set of integer properties
399 // Pointer to next pass for multipass render settings
401 // Differential transition from previous pass
403 // Attached render setting reactors
405 public:
418 {
419 *this = rs;
420 }
424
426
427 // Control rendering settings overriding
429 {
431 }
433 {
435 react(rsReact);
436 }
437
438 // Basic rendering mode
440 {
441 return m_renderMode;
442 }
444 {
445 m_renderMode = rMode;
446 react(rsReact);
447 }
448
449 // User-defined passId
451 {
452 return m_rsPassId;
453 }
455 {
456 m_rsPassId = nPassId;
457 react(rsReact);
458 }
460 OdUInt16 passMask = 0xFFFF, bool bSearchNested = true) const;
461
462 // Draw flags accessors
463 bool drawFlag(OdUInt32 nFlag) const
464 {
465 return m_nDrawFlags.get(nFlag);
466 }
468 {
469 m_nDrawFlags.set(nFlag);
470 react(rsReact);
471 }
473 {
474 m_nDrawFlags.reset(nFlag);
475 react(rsReact);
476 }
478 {
479 m_nDrawFlags.set(nFlag, bSet);
480 react(rsReact);
481 }
482
483 // Draw flags array accessors
485 {
486 while (nFlags && *pFlags)
487 setDrawFlag(*pFlags++, kRSIgnoreReactor), nFlags--;
488 react(rsReact);
489 }
491 {
492 while (nFlags && *pFlags)
493 resetDrawFlag(*pFlags++, kRSIgnoreReactor), nFlags--;
494 react(rsReact);
495 }
496
497 // Clear flags
499 {
500 m_nDrawFlags.clear();
501 react(rsReact);
502 }
503
504 // Draw flags serialization support
506 {
507 return m_nDrawFlags.getPtr();
508 }
510 {
511 return m_nDrawFlags.getPtr();
512 }
513
514 // Access color properties
515 const Color &color(ColorProps nProp, bool bResolved = true) const
516 {
517 return (!bResolved) ? m_colorProps[nProp] : resolveColor(m_colorProps[nProp]);
518 }
520 {
521 m_colorProps[nProp] = clr;
522 react(rsReact);
523 }
524
525 // Access floating point properties
526 float value(FloatProps nProp) const
527 {
528 return m_floatProps[nProp];
529 }
531 {
532 m_floatProps[nProp] = fVal;
533 react(rsReact);
534 }
535
536 // Access integer properties
538 {
539 return m_intProps[nProp];
540 }
542 {
543 return (OdUInt32)m_intProps[nProp];
544 }
546 {
547 m_intProps[nProp] = nVal;
548 react(rsReact);
549 }
551 {
552 m_intProps[nProp] = (OdInt32)nVal;
553 react(rsReact);
554 }
555
556 // Multipass render settings
558 {
559 if (m_pNextPass[passType].get() != pNextPass)
560 setNextPass(passType, OdTrRndRenderSettingsPtr(pNextPass), rsReact);
561 }
563 {
564 if (m_pNextPass[passType].get() != pNextPass.get())
565 {
566 m_pNextPass[passType] = pNextPass;
567 m_pDifTrans[passType] = NULL;
568 react(rsReact);
569 }
570 }
572 {
573 if (!pNextPass)
574 m_pNextPass[passType] = NULL;
575 else
576 m_pNextPass[passType] = new OdTrRndRenderSettings(*pNextPass);
577 m_pDifTrans[passType] = NULL;
578 react(rsReact);
579 }
583 bool hasNextPass(MultiPassType passType) const
584 {
585 return !m_pNextPass[passType].isNull();
586 }
588 {
589 return m_pNextPass[passType].get();
590 }
592 {
593 return m_pNextPass[passType].get();
594 }
596 {
597 return m_pNextPass[passType];
598 }
600 {
601 return m_pNextPass[passType];
602 }
603
605 {
606 m_pDifTrans[passType] = pDifTrans;
607 }
609 {
610 return m_pDifTrans[passType];
611 }
613 {
614 m_pDifTrans[passType] = NULL;
615 }
616
617 // Multipass support for geometry types
619
620 bool hasNextPass(OdTrVisGeomType geomType) const
621 { const MultiPassType passType = geomTypeMultiPass(geomType);
622 if (passType >= kNumMultiPassTypes) return false;
623 return hasNextPass(passType);
624 }
626 { const MultiPassType passType = geomTypeMultiPass(geomType);
627 if (passType >= kNumMultiPassTypes) return NULL;
628 return nextPass(passType);
629 }
631 { const MultiPassType passType = geomTypeMultiPass(geomType);
632 if (passType >= kNumMultiPassTypes) return NULL;
633 return nextPass(passType);
634 }
636 { const MultiPassType passType = geomTypeMultiPass(geomType);
637 if (passType >= kNumMultiPassTypes) return OdTrRndRenderSettingsPtr();
638 return nextPassPtr(passType);
639 }
641 { const MultiPassType passType = geomTypeMultiPass(geomType);
642 if (passType >= kNumMultiPassTypes) return OdTrRndRenderSettingsPtr();
643 return nextPassPtr(passType);
644 }
645
646 // Render settings reactors
650
651 // Reactor default behavior
655 {
656 react(rsReact);
657 }
658
659 // Extended functions
663 bool isGeomTypeVisible(OdTrVisGeomType geomType) const;
665
666 // Some basic properties access
667 // !RenderMode::depthBufferEnabled
668 bool is2dModeEnabled() const
669 {
670 return drawFlag(kDrawOrder);
671 }
672 // RenderMode::stencilBufferEnabled
674 {
676 }
677 // RenderMode::polygonOffsetEnabled
683 // RenderMode::lightingEnabled
685 {
687 }
688 bool isLightingEnabled() const
689 {
690 return drawFlag(kDrawLighting);
691 }
692 // RenderMode::faceNormalsEnabled
694 {
695 return drawFlag(kFaceNormals);
696 }
697 // RenderConfig::isForceDefaultLighting
698 bool isDefaultLighting() const
699 {
701 }
702 // RenderConfig::isHardwareColorModifiersEnabled
711
712 // Loading/saving ability
713 bool save(OdGsFiler *pFiler) const;
714 bool load(OdGsFiler *pFiler);
715
716 // Extended properties information
717 static OdUInt32 extendedPropsInfo(const UIPropEntry **ppEntries = NULL);
718 protected:
719 bool loadNextPass(MultiPassType passType, OdGsFiler *pFiler);
720 const Color &resolveColor(const Color &clr) const;
721 void reactImpl();
723 {
724 if ((rsReact == kRSCallReactor) || ((rsReact == kRSReactorDefault) && !GETBIT(m_rsFlags, kSuppressReactor)))
725 reactImpl();
726 }
727};
728
729// Null render settings (applicable as stub for initial render settings switch)
731
732inline
734{
735 switch (geomType)
736 {
753 default: return false;
754 }
755}
756
757inline
759{
760 switch (geomType)
761 {
762 //case OdTrVisGeomType_2dFacets: case OdTrVisGeomType_2dFacetsNoFill: return kMultiPassFor2dFacets;
763 //case OdTrVisGeomType_3dFacets: case OdTrVisGeomType_3dFacetsNoFill: return kMultiPassFor3dFacets;
764 //case OdTrVisGeomType_RasterImageFacets: return kMultiPassForRasterImages;
765 //case OdTrVisGeomType_2dFacetEdges: return kMultiPassFor2dFacetEdges;
766 //case OdTrVisGeomType_3dFacetEdges: case OdTrVisGeomType_EdgesWithIsolines: return kMultiPassFor3dFacetEdges;
767 //case OdTrVisGeomType_Isolines: return kMultiPassForIsolines;
769 //case OdTrVisGeomType_Silhouettes: return kMultiPassForSilhouettes;
770 default: return kNumMultiPassTypes;
771 }
772}
773
774inline
776{
777 switch (clr.m_colorType)
778 {
779 case kColorBackground: return color(kPropBackgroundColor, false);
780 case kColorForeground: return color(kPropForegroundColor, false);
781 default: break;
782 }
783 return clr;
784}
785
790{
791 public:
793 {
795 kRSViewportPS = (1 << 1),
798 };
799 public:
802
803 virtual OdUInt32 rsNumViewports() const = 0;
804
805 virtual OdTrVisViewportId rsViewportId(OdUInt32 numViewport) const = 0;
806 virtual OdUInt32 rsViewportFlags(OdUInt32 numViewport) const = 0;
807
808 virtual void rsViewportSettings(OdUInt32 numViewport, OdTrRndRenderSettingsPtr &rs) const = 0;
810
811 virtual bool rsIsViewportRenderModeOverride(OdUInt32 numViewport) const = 0;
812 virtual void rsSetViewportRenderModeOverride(OdUInt32 numViewport, bool bOverride) = 0;
813 virtual void rsApplyViewportRenderModeOverride(OdUInt32 numViewport) = 0;
814};
815
816#include "TD_PackPop.h"
817
818#endif // ODTRRNDRENDERSETTINGS
#define ODCOLORREF
#define ODRGBA(r, g, b, a)
unsigned int OdUInt32
unsigned short OdUInt16
int OdInt32
unsigned char OdUInt8
wchar_t OdChar
#define SETBIT(flags, bit, value)
Definition OdaDefs.h:516
#define SETBIT_0(flags, bit)
Definition OdaDefs.h:519
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
#define SETBIT_1(flags, bit)
Definition OdaDefs.h:520
OdSharedPtr< OdTrRndDifferentialTransition > OdTrRndDifferentialTransitionPtr
OdStaticDefSharedPtr< OdTrRndRenderSettings > OdTrRndRenderSettingsStaticPtr
OdSharedPtr< OdTrRndRenderSettings > OdTrRndRenderSettingsPtr
OdTrRndRenderSettingsStaticPtr kTrRndNullRenderSettings
OdTrRndRSUpdateReactor
@ kRSCallReactor
@ kRSReactorDefault
@ kRSIgnoreReactor
OdTrVisId OdTrVisViewportId
Definition TrVisDefs.h:103
@ OdTrVisGeomType_3dFacetsNoFill
@ OdTrVisGeomType_HatchIsolineEdges
@ OdTrVisGeomType_Silhouettes
@ OdTrVisGeomType_2dFacetEdges
@ OdTrVisGeomType_Isolines
@ OdTrVisGeomType_3dFacetEdges
@ OdTrVisGeomType_2dFacets
@ OdTrVisGeomType_FillPatternEdges
@ OdTrVisGeomType_Default
@ OdTrVisGeomType_RasterImageFacets
@ OdTrVisGeomType_2dFacetsNoFill
@ OdTrVisGeomType_EdgesWithIsolines
@ OdTrVisGeomType_3dFacets
@ OdTrVisGeomType_IntersectionEdges
RenderMode
Definition Gs.h:149
@ k2DOptimized
Definition Gs.h:151
void set(OdUInt32 nFlag, bool bSet)
bool get(OdUInt32 nFlag) const
void addReactor(OdTrRndRenderSettingsReactor *pReactor)
void setNextPass(MultiPassType passType, const OdTrRndRenderSettingsPtr &pNextPass, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setNextPass(MultiPassType passType, OdTrRndRenderSettings *pNextPass, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
OdTrRndRenderSettings(const OdTrRndRenderSettings &rs)
bool isFaceColorOverrideEnabled() const
OdUInt32 valueU(IntegerProps nProp) const
OdGsView::RenderMode renderMode() const
const OdTrRndDifferentialTransitionPtr & differentialTransition(MultiPassType passType) const
static OdUInt32 make_edgesStyle(OdPs::LineEndStyle lesStyle, OdPs::LineJoinStyle ljsStyle)
const OdUInt8 * serializationFlagsPtr() const
OdUInt32 makeGeomMarkerVisibilities() const
OdArray< OdTrRndRenderSettingsReactor *, OdMemoryAllocator< OdTrRndRenderSettingsReactor * > > m_reactors
bool loadNextPass(MultiPassType passType, OdGsFiler *pFiler)
OdTrRndRenderSettings * nextPass(MultiPassType passType)
void resetDrawFlag(OdUInt32 nFlag, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
bool hasNextPass(MultiPassType passType) const
void resetDrawFlags(const OdUInt32 *pFlags, OdUInt32 nFlags=kNumFlags, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setLastPass(MultiPassType passType, const OdTrRndRenderSettingsPtr &pNextPass, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setValue(IntegerProps nProp, OdInt32 nVal, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
static CreaseFlags creaseFlagDecode(OdUInt32 flags)
Color m_colorProps[kNumColorProps]
void setReactorDefault(OdTrRndRSUpdateReactor rsDefault)
static OdPs::LineJoinStyle get_lineJoinStyle(OdUInt32 lineStyle)
OdTrRndRenderSettingsPtr nextPassPtr(OdTrVisGeomType geomType)
void setRenderMode(OdGsView::RenderMode rMode, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setRenderModeOverride(bool bSet, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
OdTrRndRenderSettingsPtr m_pNextPass[kNumMultiPassTypes]
OdTrRndRenderSettings * nextPass(OdTrVisGeomType geomType)
OdGsView::RenderMode m_renderMode
MultiPassType geomTypeMultiPass(OdTrVisGeomType geomType) const
bool save(OdGsFiler *pFiler) const
void setLastPass(MultiPassType passType, OdTrRndRenderSettings *pNextPass, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
bool drawFlag(OdUInt32 nFlag) const
const Color & resolveColor(const Color &clr) const
float m_floatProps[kNumFloatProps]
void forceReactorUpdate(OdTrRndRSUpdateReactor rsReact=kRSCallReactor)
OdTrRndRSUpdateReactor reactorDefault() const
bool isGeomTypeVisible(OdTrVisGeomType geomType) const
OdInt32 m_intProps[kNumIntegerProps]
void removeReactor(OdTrRndRenderSettingsReactor *pReactor)
void setDrawFlag(OdUInt32 nFlag, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
OdTrRndRenderSettingsPtr & nextPassPtr(MultiPassType passType)
void setNextPassCopy(MultiPassType passType, const OdTrRndRenderSettings *pNextPass, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setDrawFlags(const OdUInt32 *pFlags, OdUInt32 nFlags=kNumFlags, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setLastPassCopy(MultiPassType passType, const OdTrRndRenderSettings *pNextPass, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
OdTrRndRenderSettingsPtr searchPassId(OdUInt16 passId, OdTrRndRenderSettingsPtr pSelfPtr=OdTrRndRenderSettingsPtr(), OdUInt16 passMask=0xFFFF, bool bSearchNested=true) const
const OdTrRndRenderSettings * nextPass(MultiPassType passType) const
void setForRenderMode(OdGsView::RenderMode rm, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
bool hasReactor(OdTrRndRenderSettingsReactor *pReactor) const
static OdUInt32 extendedPropsInfo(const UIPropEntry **ppEntries=NULL)
bool hasNextPass(OdTrVisGeomType geomType) const
static OdPs::LineEndStyle get_lineEndStyle(OdUInt32 lineStyle)
OdTrRndRenderSettings(OdGsView::RenderMode initialRenderMode=OdGsView::k2DOptimized, OdTrRndRSUpdateReactor rsDefault=kRSCallReactor)
void setPassId(OdUInt16 nPassId, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void clearDrawFlags(OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
OdTrRndRenderSettings & operator=(const OdTrRndRenderSettings &rs)
void react(OdTrRndRSUpdateReactor rsReact)
void setDrawFlag(OdUInt32 nFlag, bool bSet, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
static CreaseFlags get_creaseFilterBack(OdUInt32 creaseFilter)
void setValueU(IntegerProps nProp, OdUInt32 nVal, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setColor(ColorProps nProp, const Color &clr, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void setValue(FloatProps nProp, float fVal, OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
void resolveByViewportDef(const OdTrVisViewportShadingDef &vpDef)
static OdUInt32 make_creaseFilter(CreaseFilterDefault defFilter)
static CreaseFlags get_creaseFilterFront(OdUInt32 creaseFilter)
BitSet< kNumFlagRegs > m_nDrawFlags
OdInt32 value(IntegerProps nProp) const
OdTrRndDifferentialTransitionPtr m_pDifTrans[kNumMultiPassTypes]
const OdTrRndRenderSettingsPtr nextPassPtr(OdTrVisGeomType geomType) const
void setPropsDefault(OdTrRndRSUpdateReactor rsReact=kRSReactorDefault)
bool is3dFacesWithLinesEnabled() const
static OdUInt32 make_creaseFilter(CreaseFlags frontLimit, CreaseFlags backLimit)
const OdTrRndRenderSettingsPtr & nextPassPtr(MultiPassType passType) const
bool load(OdGsFiler *pFiler)
static OdUInt32 creaseFlagEncode(CreaseFlags flags)
float value(FloatProps nProp) const
void resetDifferentialTransition(MultiPassType passType)
const OdTrRndRenderSettings * nextPass(OdTrVisGeomType geomType) const
const Color & color(ColorProps nProp, bool bResolved=true) const
void setDifferentialTransition(MultiPassType passType, const OdTrRndDifferentialTransitionPtr &pDifTrans)
virtual OdUInt32 rsNumViewports() const =0
virtual void rsViewportSettings(OdUInt32 numViewport, OdTrRndRenderSettingsPtr &rs) const =0
virtual OdTrRndRenderSettings & rsViewportSettings(OdUInt32 numViewport)=0
virtual OdUInt32 rsViewportFlags(OdUInt32 numViewport) const =0
virtual bool rsIsViewportRenderModeOverride(OdUInt32 numViewport) const =0
virtual void rsSetViewportRenderModeOverride(OdUInt32 numViewport, bool bOverride)=0
virtual OdTrVisViewportId rsViewportId(OdUInt32 numViewport) const =0
virtual void rsApplyViewportRenderModeOverride(OdUInt32 numViewport)=0
virtual void renderSettingsChanged(OdTrRndRenderSettings *pRSets)=0
LineJoinStyle
Definition PlotStyles.h:78
LineEndStyle
Definition PlotStyles.h:69
Color(ColorType colorType=kColorBackground, ODCOLORREF colorVal=ODRGBA(0, 0, 0, 255))
OdUInt32 m_nLinkUIId1
PropType m_propType
UIPropRanges m_ranges
OdUInt32 m_nLinkUIId2
UIDefVal m_defaultVal
OdUInt32 m_nPropCode
const OdChar * m_pName
UIPropRanges(OdInt32 intMin, OdInt32 intMax)
UIPropRanges(OdUInt32 uintMin, OdUInt32 uintMax)
UIPropRanges(float fltMin, float fltMax)
struct OdTrRndRenderSettings::UIDefVal::ColorProp m_colorProp
UIDefVal(ColorType colorType, ODCOLORREF colorVal=ODRGBA(0, 0, 0, 255))