/** @packageDocumentation * @module DisplayStyles */ import { BeEvent, CompressedId64Set, Id64Array, Id64String, OrderedId64Iterable } from "@bentley/bentleyjs-core"; import { XYZProps } from "@bentley/geometry-core"; import { AmbientOcclusion } from "./AmbientOcclusion"; import { AnalysisStyle, AnalysisStyleProps } from "./AnalysisStyle"; import { BackgroundMapProps, BackgroundMapSettings } from "./BackgroundMapSettings"; import { ClipStyle, ClipStyleProps } from "./ClipStyle"; import { ColorDef, ColorDefProps } from "./ColorDef"; import { DefinitionElementProps } from "./ElementProps"; import { GroundPlaneProps } from "./GroundPlane"; import { HiddenLine } from "./HiddenLine"; import { FeatureAppearance, FeatureAppearanceProps } from "./FeatureSymbology"; import { PlanarClipMaskProps, PlanarClipMaskSettings } from "./PlanarClipMask"; import { SubCategoryOverride } from "./SubCategoryOverride"; import { LightSettings, LightSettingsProps } from "./LightSettings"; import { MapImageryProps, MapImagerySettings } from "./MapImagerySettings"; import { PlanProjectionSettings, PlanProjectionSettingsProps } from "./PlanProjectionSettings"; import { RenderSchedule } from "./RenderSchedule"; import { SkyBoxProps } from "./SkyBox"; import { SolarShadowSettings, SolarShadowSettingsProps } from "./SolarShadows"; import { SubCategoryAppearance } from "./SubCategoryAppearance"; import { ThematicDisplay, ThematicDisplayProps } from "./ThematicDisplay"; import { ViewFlagProps, ViewFlags } from "./ViewFlags"; import { Cartographic } from "./geometry/Cartographic"; import { IModel } from "./IModel"; import { ContextRealityModel, ContextRealityModelProps, ContextRealityModels } from "./ContextRealityModel"; import { WhiteOnWhiteReversalProps, WhiteOnWhiteReversalSettings } from "./WhiteOnWhiteReversalSettings"; /** Describes the [[SubCategoryOverride]]s applied to a [[SubCategory]] by a [[DisplayStyle]]. * @see [[DisplayStyleSettingsProps]] * @public */ export interface DisplayStyleSubCategoryProps extends SubCategoryAppearance.Props { /** The Id of the [[SubCategory]] whose appearance is to be overridden. */ subCategory?: Id64String; } /** A [[FeatureAppearanceProps]] applied to a specific model to override its appearance within the context of a [DisplayStyle]($backend). * @see [[DisplayStyleSettingsProps.modelOvr]]. * @public */ export interface DisplayStyleModelAppearanceProps extends FeatureAppearanceProps { /** The Id of the model whose appearance is to be overridden. */ modelId?: Id64String; } /** A [[PlanarClipMaskProps]] associated with a specific reality model. * @see [[DisplayStyleSettingsProps.planarClipOvr]]. * @public */ export interface DisplayStylePlanarClipMaskProps extends PlanarClipMaskProps { /** The Id of the model to mask. */ modelId?: Id64String; } /** JSON representation of the environment setup of a [[DisplayStyle3d]]. * @public */ export interface EnvironmentProps { ground?: GroundPlaneProps; sky?: SkyBoxProps; } /** Describes the style in which monochrome color is applied by a [[DisplayStyleSettings]]. * @public */ export declare enum MonochromeMode { /** The color of the geometry is replaced with the monochrome color. e.g., if monochrome color is white, the geometry will be white. */ Flat = 0, /** The color of surfaces is computed as normal, then scaled to a shade of the monochrome color based on the surface color's intensity. * For example, if the monochrome color is white, this results in a greyscale effect. * Geometry other than surfaces is treated the same as [[MonochromeMode.Flat]]. */ Scaled = 1 } /** JSON representation of the settings associated with a [[DisplayStyleProps]]. * These settings are not stored directly as members of the [[DisplayStyleProps]]. Instead, they are stored * as members of `jsonProperties.styles`. * @see [[DisplayStyleSettings]]. * @public */ export interface DisplayStyleSettingsProps { viewflags?: ViewFlagProps; /** The color displayed in the view background. Defaults to black. */ backgroundColor?: ColorDefProps; /** The color used in monochrome mode. Defaults to white. * The monochrome color is applied to all surfaces and linear geometry. * It is never applied to the **edges** of surfaces, except in Wireframe render mode. */ monochromeColor?: ColorDefProps; /** The style in which the monochrome color is applied. Default: [[MonochromeMode.Scaled]]. */ monochromeMode?: MonochromeMode; /** Settings controlling display of analytical models. */ analysisStyle?: AnalysisStyleProps; /** A floating point value in [0..1] representing the animation state of this style's [[analysisStyle]]. Default: 0.0. */ analysisFraction?: number; /** A schedule script embedded into the display style settings. This is how schedule scripts were stored prior to the introduction of * [RenderTimeline]($backend) elements. It should no longer be used - instead, set [[renderTimeline]] to the Id of the RenderTimeline element * that hosts the script. * @note For a [DisplayStyleState]($frontend) obtained via [IModelConnection.Views.load]($frontend), the element Ids will be omitted from all * of the script's [[ElementTimelineProps]] to conserve bandwidth and memory, because they are not needed for display on the frontend. * @deprecated Use DisplayStyleSettingsProps.renderTimeline. * @internal */ scheduleScript?: RenderSchedule.ModelTimelineProps[]; /** The Id of a [RenderTimeline]($backend) element containing a [[RenderSchedule.Script]] that can be used to animate the view. */ renderTimeline?: Id64String; /** The point in time reflected by the view, in UNIX seconds. * This identifies a point on the timeline of the style's [[RenderSchedule.Script]], if any; it may also affect display of four-dimensional reality models. */ timePoint?: number; /** Overrides applied to the appearances of subcategories in the view. */ subCategoryOvr?: DisplayStyleSubCategoryProps[]; /** Settings controlling display of map within views of geolocated models. */ backgroundMap?: BackgroundMapProps; /** @see [[DisplayStyleSettings.contextRealityModels]]. */ contextRealityModels?: ContextRealityModelProps[]; /** Ids of elements not to be displayed in the view. Prefer the compressed format, especially when sending between frontend and backend - the number of Ids may be quite large. */ excludedElements?: Id64Array | CompressedId64Set; /** Map Imagery. * @alpha */ mapImagery?: MapImageryProps; /** Overrides applied to the appearance of models in the view. */ modelOvr?: DisplayStyleModelAppearanceProps[]; /** Style applied by the view's [ClipVector]($geometry-core). */ clipStyle?: ClipStyleProps; /** Planar clip masks applied to reality models. */ planarClipOvr?: DisplayStylePlanarClipMaskProps[]; /** @see [[DisplayStyleSettings.whiteOnWhiteReversal]]. */ whiteOnWhiteReversal?: WhiteOnWhiteReversalProps; } /** JSON representation of settings associated with a [[DisplayStyle3dProps]]. * @see [[DisplayStyle3dSettings]]. * @public */ export interface DisplayStyle3dSettingsProps extends DisplayStyleSettingsProps { /** Settings controlling display of skybox and ground plane. */ environment?: EnvironmentProps; /** Settings controlling thematic display. */ thematic?: ThematicDisplayProps; /** Settings controlling display of visible and hidden edges. */ hline?: HiddenLine.SettingsProps; /** Settings controlling display of ambient occlusion, stored in Props. */ ao?: AmbientOcclusion.Props; /** Settings controlling display of solar shadows, stored in Props. */ solarShadows?: SolarShadowSettingsProps; /** Settings controlling how the scene is lit. */ lights?: LightSettingsProps; /** Settings controlling how plan projection models are to be rendered. The key for each entry is the Id of the model to which the settings apply. */ planProjections?: { [modelId: string]: PlanProjectionSettingsProps; }; /** Old lighting settings - only `sunDir` was ever used; it is now part of `lights`. * @deprecated * @internal */ sceneLights?: { sunDir?: XYZProps; }; } /** JSON representation of a [[DisplayStyle]] or [[DisplayStyleState]]. * @public */ export interface DisplayStyleProps extends DefinitionElementProps { /** Display styles store their settings in a `styles` property within [[ElementProps.jsonProperties]]. */ jsonProperties?: { styles?: DisplayStyleSettingsProps; }; } /** JSON representation of a [[DisplayStyle3d]] or [[DisplayStyle3dState]]. * @public */ export interface DisplayStyle3dProps extends DisplayStyleProps { /** Display styles store their settings in a `styles` property within [[ElementProps.jsonProperties]]. */ jsonProperties?: { styles?: DisplayStyle3dSettingsProps; }; } /** Controls which settings are serialized by [[DisplayStyleSettings.toOverrides]]. A display style includes some settings that are specific to a given iModel - for example, * the subcategory overrides are indexed by subcategory Ids and model appearance overrides are indexed by model ids. Other settings are specific to a given project, like the set of displayed context reality models. Such settings can be useful * when creating display style overrides intended for use with a specific iModel or project, but should be omitted when creating general-purpose display style overrides intended * for use with any iModel or project. This is the default behavior if no more specific options are provided. * @public */ export interface DisplayStyleOverridesOptions { /** Serialize all settings. Applying the resultant [[DisplayStyleSettingsProps]] will produce a [[DisplayStyleSettings]] identical to the original settings. */ includeAll?: true; /** Serialize iModel-specific settings. These settings are only meaningful within the context of a specific iModel. Setting this to `true` implies all project-specific settings will be serialized too. * The following are iModel-specific settings: * * Subcategory overrides. * * Model Appearance overrides. * * Classifiers associated with context reality models. * * Analysis style. * * Schedule script. * * Excluded elements. * * Plan projection settings. * * Thematic sensor settings and height range. If iModel-specific settings are *not* serialized, sensors will be omitted and, for thematic height mode, the range will be omitted. * * If the display style settings are associated with a [DisplayStyleState]($frontend), then overriding thematic settings will compute a default height range based on the iModel's project extents. */ includeIModelSpecific?: true; /** Serialize project-specific settings. These settings are only meaningful within the context of a specific project. These settings are always included if `includeIModelSpecific` is `true`. * The following are project-specific settings: * * Context reality models. If iModel-specific settings are *not* serialized, the classifiers will be omitted. * * Time point. */ includeProjectSpecific?: true; /** Serialize settings related to drawing aid decorations (the ACS triad and the grid). */ includeDrawingAids?: true; /** Serialize the background map settings. */ includeBackgroundMap?: true; } /** Options supplied when constructing a [[DisplayStyleSettings]]. * @public */ export interface DisplayStyleSettingsOptions { /** A function that instantiates a [[ContextRealityModel]] to be stored in [[DisplayStyleSettings.contextRealityModels]]. */ createContextRealityModel?: (props: ContextRealityModelProps) => ContextRealityModel; } /** Provides access to the settings defined by a [[DisplayStyle]] or [[DisplayStyleState]], and ensures that * the style's JSON properties are kept in sync. * @public */ export declare class DisplayStyleSettings { protected readonly _json: DisplayStyleSettingsProps; private readonly _viewFlags; private _background; private _monochrome; private _monochromeMode; private readonly _subCategoryOverrides; private readonly _modelAppearanceOverrides; private readonly _planarClipMasks; private readonly _excludedElements; private _backgroundMap; private _mapImagery; private _analysisStyle?; private _clipStyle; private readonly _contextRealityModels; private _whiteOnWhiteReversal; is3d(): this is DisplayStyle3dSettings; /** Planar clip masks to be applied to persistent reality models (@see [SpatialModelState.isRealityModel]($frontend). * The key for each entry is the Id of the model to which the mask settings apply. */ get planarClipMasks(): Map; /** Reality models to be displayed in the view. */ get contextRealityModels(): ContextRealityModels; /** Event raised by [[applyOverrides]] just before the overrides are applied. */ readonly onApplyOverrides: BeEvent<(overrides: Readonly) => void>; /** Event raised by [[applyOverrides]] after the overrides are applied. */ readonly onOverridesApplied: BeEvent<(overrides: Readonly) => void>; /** Event raised just prior to assignment to the [[viewFlags]] property. */ readonly onViewFlagsChanged: BeEvent<(newFlags: Readonly) => void>; /** Event raised just prior to assignment to the [[backgroundColor]] property. */ readonly onBackgroundColorChanged: BeEvent<(newColor: ColorDef) => void>; /** Event raised just prior to assignment to the [[monochromeColor]] property. */ readonly onMonochromeColorChanged: BeEvent<(newColor: ColorDef) => void>; /** Event raised just prior to assignment to the [[monochromeMode]] property. */ readonly onMonochromeModeChanged: BeEvent<(newMode: MonochromeMode) => void>; /** Event raised just prior to assignment to the [[backgroundMap]] property. */ readonly onBackgroundMapChanged: BeEvent<(newMap: BackgroundMapSettings) => void>; /** Event raised just prior to assignment to the [[mapImagery]] property. * @alpha */ readonly onMapImageryChanged: BeEvent<(newImagery: Readonly) => void>; /** Event raised just prior to assignment to the `scheduleScriptProps` property. * @deprecated Use onRenderTimelineChanged * @internal */ readonly onScheduleScriptPropsChanged: BeEvent<(newProps: Readonly | undefined) => void>; /** Event raised just prior to assignment to the [[renderTimeline]] property. */ readonly onRenderTimelineChanged: BeEvent<(newRenderTimeline: Id64String | undefined) => void>; /** Event raised just prior to assignment to the [[timePoint]] property. */ readonly onTimePointChanged: BeEvent<(newTimePoint: number | undefined) => void>; /** Event raised just prior to assignment to the [[analysisStyle]] property. */ readonly onAnalysisStyleChanged: BeEvent<(newStyle: Readonly | undefined) => void>; /** Event raised just prior to assignment to the [[analysisFraction]] property. */ readonly onAnalysisFractionChanged: BeEvent<(newFraction: number) => void>; /** Event raised when the contents of [[excludedElementIds]] changes. */ readonly onExcludedElementsChanged: BeEvent<() => void>; /** Event raised just prior to assignment to the [[clipStyle]] property. */ readonly onClipStyleChanged: BeEvent<(newStyle: ClipStyle) => void>; /** Event raised when the [[SubCategoryOverride]]s change. */ readonly onSubCategoryOverridesChanged: BeEvent<(subCategoryId: Id64String, newOverrides: SubCategoryOverride | undefined) => void>; /** Event raised just before changing the appearance override for a model. */ readonly onModelAppearanceOverrideChanged: BeEvent<(modelId: Id64String, newAppearance: FeatureAppearance | undefined) => void>; /** Event raised just prior to assignment to the [[thematic]] property. */ readonly onThematicChanged: BeEvent<(newThematic: ThematicDisplay) => void>; /** Event raised just prior to assignment to the [[hiddenLineSettings]] property. */ readonly onHiddenLineSettingsChanged: BeEvent<(newSettings: HiddenLine.Settings) => void>; /** Event raised just prior to assignment to the [[ambientOcclusionSettings]] property. */ readonly onAmbientOcclusionSettingsChanged: BeEvent<(newSettings: AmbientOcclusion.Settings) => void>; /** Event raised just prior to assignment to the [[solarShadows]] property. */ readonly onSolarShadowsChanged: BeEvent<(newSettings: SolarShadowSettings) => void>; /** Event raised just prior to assignment to the [[environment]] property. */ readonly onEnvironmentChanged: BeEvent<(newProps: Readonly) => void>; /** Event raised just prior to assignment to the [[lights]] property. */ readonly onLightsChanged: BeEvent<(newLights: LightSettings) => void>; /** Event raised just before changing the plan projection settings for a model. */ readonly onPlanProjectionSettingsChanged: BeEvent<(modelId: Id64String, newSettings: PlanProjectionSettings | undefined) => void>; /** Event raised just before adding or removing an entry from [[planarClipMasks]]. */ readonly onPlanarClipMaskChanged: BeEvent<(modelId: Id64String, newSettings: PlanarClipMaskSettings | undefined) => void>; /** Event raised just prior to assignment to the [[whiteOnWhiteReversal]] property. */ readonly onWhiteOnWhiteReversalChanged: BeEvent<(newSettings: WhiteOnWhiteReversalSettings) => void>; /** Construct a new DisplayStyleSettings from an [[ElementProps.jsonProperties]]. * @param jsonProperties An object with an optional `styles` property containing a display style's settings. * @param options Options for customizing the display style settings. * @note When the `DisplayStyleSetting`'s properties are modified by public setters, the `jsonProperties`'s `styles` object will be updated to reflect the change. * @note If `jsonProperties` contains no `styles` member, one will be added as an empty object. * @note Generally there is no reason to create an object of this type directly; a [[DisplayStyle]] or [[DisplayStyleState]] constructs one as part of its own construction. */ constructor(jsonProperties: { styles?: DisplayStyleSettingsProps; }, options?: DisplayStyleSettingsOptions); /** Flags controlling various aspects of the display style. To change the style's view flags, do something like: * ```ts * const flags = settings.viewFlags.clone(); * flags.renderMode = RenderMode.SmoothShade; // or any other alterations. * settings.viewFlags = flags; * @note Don't modify this object directly - clone it and modify the clone, then pass the clone to the setter. */ get viewFlags(): ViewFlags; set viewFlags(flags: ViewFlags); /** The background color. * @note Do not modify the color in place. Clone it and pass the clone to the setter. */ get backgroundColor(): ColorDef; set backgroundColor(color: ColorDef); /** The color used to draw geometry in monochrome mode. * @note Do not modify the color in place. Clone it and pass the clone to the setter. * @see [[ViewFlags.monochrome]] for enabling monochrome mode. */ get monochromeColor(): ColorDef; set monochromeColor(color: ColorDef); /** The style in which [[monochromeColor]] is applied. */ get monochromeMode(): MonochromeMode; set monochromeMode(mode: MonochromeMode); /** Settings controlling display of the background map within the view. */ get backgroundMap(): BackgroundMapSettings; set backgroundMap(map: BackgroundMapSettings); /** Get the map imagery for this display style. Map imagery includes the background map base as well as background layers and overlay layers. * In earlier versions only a background map image was supported as specified by the providerName and mapType members of [[BackgroundMapSettings]] object. * In order to provide backward compatibility the original [[BackgroundMapSettings]] are synchronized with the [[MapImagerySettings]] base layer as long as * the settings are compatible. The map imagery typically only should be modified only through [DisplayStyleState]($frontend) methods. * Map imagery should only be modified from backend, changes to map imagery from front end should be handled only through [DisplayStyleState]($frontend) methods. * @alpha */ get mapImagery(): MapImagerySettings; set mapImagery(mapImagery: MapImagerySettings); /** @internal * Handles keeping the map imagery layers in synch after changes have been made (used internally only by front end) */ synchMapImagery(): void; /** The Id of a [RenderTimeline]($backend) element containing a [[RenderSchedule.Script]] used to animate the view. */ get renderTimeline(): Id64String | undefined; set renderTimeline(id: Id64String | undefined); /** @internal @deprecated */ get scheduleScriptProps(): RenderSchedule.ModelTimelineProps[] | undefined; set scheduleScriptProps(props: RenderSchedule.ModelTimelineProps[] | undefined); /** The point in time reflected by the view, in UNIX seconds. * This identifies a point on the timeline of the style's [[RenderSchedule.Script]], if any; it may also affect display of four-dimensional reality models. */ get timePoint(): number | undefined; set timePoint(timePoint: number | undefined); /** Settings controlling the display of analytical models. * @see [[analysisFraction]] to control playback of the animation. */ get analysisStyle(): AnalysisStyle | undefined; set analysisStyle(style: AnalysisStyle | undefined); /** A value in [0..1] indicating the current point in animation of the [[analysisStyle]], where 0 corresponds to the beginning of * the animation and 1 to the end. */ get analysisFraction(): number; set analysisFraction(fraction: number); /** Settings controlling how white-on-white reversal is applied. */ get whiteOnWhiteReversal(): WhiteOnWhiteReversalSettings; set whiteOnWhiteReversal(settings: WhiteOnWhiteReversalSettings); /** Customize the way geometry belonging to a [[SubCategory]] is drawn by this display style. * @param id The Id of the SubCategory whose appearance is to be overridden. * @param ovr The overrides to apply to the [[SubCategoryAppearance]]. * @see [[dropSubCategoryOverride]] */ overrideSubCategory(id: Id64String, ovr: SubCategoryOverride): void; /** Remove any [[SubCategoryOverride]] applied to a [[SubCategoryAppearance]] by this style. * @param id The Id of the [[SubCategory]]. * @see [[overrideSubCategory]] */ dropSubCategoryOverride(id: Id64String): void; /** The overrides applied by this style. */ get subCategoryOverrides(): Map; /** Obtain the override applied to a [[SubCategoryAppearance]] by this style. * @param id The Id of the [[SubCategory]]. * @returns The corresponding SubCategoryOverride, or undefined if the SubCategory's appearance is not overridden. * @see [[overrideSubCategory]] */ getSubCategoryOverride(id: Id64String): SubCategoryOverride | undefined; /** Returns true if an [[SubCategoryOverride]]s are defined by this style. */ get hasSubCategoryOverride(): boolean; /** Customize the way a [Model]($backend) is drawn by this display style. * @param modelId The Id of the [Model]($backend) whose appearance is to be overridden. * @param ovr The overrides to apply to the [Model]($backend) . * @see [[dropModelAppearanceOverride]] */ overrideModelAppearance(modelId: Id64String, ovr: FeatureAppearance): void; /** Remove any appearance overrides applied to a [Model]($backend) by this style. * @param modelId The Id of the [Model]($backend) . * @param ovr The overrides to apply to the [Model]($backend) . * @see [[overrideModelAppearance]] */ dropModelAppearanceOverride(id: Id64String): void; /** The overrides applied by this style. */ get modelAppearanceOverrides(): Map; /** Obtain the override applied to a [Model]($backend) by this style. * @param id The Id of the [Model]($backend). * @returns The corresponding FeatureAppearance, or undefined if the Model's appearance is not overridden. * @see [[overrideModelAppearance]] */ getModelAppearanceOverride(id: Id64String): FeatureAppearance | undefined; /** Returns true if model appearance overrides are defined by this style. */ get hasModelAppearanceOverride(): boolean; /** The set of elements that will not be drawn by this display style. * @returns The set of excluded elements. * @note The set and the Ids it contains may be very large. It is allocated the first time this property is requested. * @deprecated Use [[excludedElementIds]] for better performance and reduced memory overhead, unless efficient lookup of Ids within the set is required. */ get excludedElements(): Set; /** The set of elements that will not be drawn by this display style. * @returns An iterable over the elements' Ids. */ get excludedElementIds(): OrderedId64Iterable; /** @internal */ get compressedExcludedElementIds(): CompressedId64Set; /** Add one or more elements to the set of elements not to be displayed. * @param id The Ids of the element(s) to be excluded. */ addExcludedElements(id: Id64String | Iterable): void; /** Remove an element from the set of elements not to be displayed. */ dropExcludedElement(id: Id64String): void; /** Remove one or more elements from the set of elements not to be displayed. * @param id The Ids of the element(s) to be removed from the set of excluded elements. */ dropExcludedElements(id: Id64String | Iterable): void; /** Remove all elements from the set of elements not to be displayed. */ clearExcludedElements(): void; /** The style applied to the view's [ClipVector]($geometry-core). */ get clipStyle(): ClipStyle; set clipStyle(style: ClipStyle); /** @internal */ toJSON(): DisplayStyleSettingsProps; /** Serialize a subset of these settings to JSON, such that they can be applied to another DisplayStyleSettings to selectively override those settings. * @param options Specifies which settings should be serialized. By default, settings that are specific to an iModel (e.g., subcategory overrides) or project (e.g., context reality models) * are omitted, as are drawing aids (e.g., ACS triad and grid). * @returns a JSON representation of the selected settings suitable for passing to [[applyOverrides]]. * @see [[applyOverrides]] to apply the overrides to another DisplayStyleSettings.. */ toOverrides(options?: DisplayStyleOverridesOptions): DisplayStyleSettingsProps; /** Selectively override some of these settings. Any field that is explicitly defined by the input will be overridden in these settings; any fields left undefined in the input * will retain their current values in these settings. The input's [[ViewFlags]] are applied individually - only those flags that are explicitly defined will be overridden. * For example, the following overrides will set the render mode to "smooth", change the background color to white, turn shadows off, and leave all other settings intact: * ```ts * { * viewflags: { * renderMode: RenderMode.SmoothShade, * shadows: false, * }, * backgroundColor: ColorByName.white, * } * ``` * @see [[toOverrides]] to produce overrides from an existing DisplayStyleSettings. */ applyOverrides(overrides: DisplayStyleSettingsProps): void; /** @internal */ protected _applyOverrides(overrides: DisplayStyleSettingsProps): void; } /** Provides access to the settings defined by a [[DisplayStyle3d]] or [[DisplayStyle3dState]], and ensures that * the style's JSON properties are kept in sync. * @public */ export declare class DisplayStyle3dSettings extends DisplayStyleSettings { private _thematic; private _hline; private _ao; private _solarShadows; private _lights; private _planProjections?; private get _json3d(); is3d(): this is DisplayStyle3dSettings; constructor(jsonProperties: { styles?: DisplayStyle3dSettingsProps; }, options?: DisplayStyleSettingsOptions); private populatePlanProjectionsFromJSON; /** @internal */ toJSON(): DisplayStyle3dSettingsProps; /** @internal */ toOverrides(options?: DisplayStyleOverridesOptions): DisplayStyle3dSettingsProps; /** Selectively override some of these settings. Any field that is explicitly defined by the input will be overridden in these settings; any fields left undefined in the input * will retain their current values in these settings. The input's [[ViewFlags]] are applied individually - only those flags that are explicitly defined will be overridden. * For example, the following overrides will set the render mode to "smooth", change the background color to white, turn shadows off, and leave all other settings intact: * ```ts * { * viewflags: { * renderMode: RenderMode.SmoothShade, * shadows: false, * }, * backgroundColor: ColorByName.white, * } * ``` * @see [[toOverrides]] to produce overrides from an existing DisplayStyleSettings. * @internal override */ applyOverrides(overrides: DisplayStyle3dSettingsProps): void; /** The settings that control thematic display. */ get thematic(): ThematicDisplay; set thematic(thematic: ThematicDisplay); /** The settings that control how visible and hidden edges are displayed. */ get hiddenLineSettings(): HiddenLine.Settings; set hiddenLineSettings(hline: HiddenLine.Settings); /** The settings that control how ambient occlusion is displayed. */ get ambientOcclusionSettings(): AmbientOcclusion.Settings; set ambientOcclusionSettings(ao: AmbientOcclusion.Settings); /** The settings that control how solar shadows are displayed. */ get solarShadows(): SolarShadowSettings; set solarShadows(solarShadows: SolarShadowSettings); /** @internal */ get environment(): EnvironmentProps; set environment(environment: EnvironmentProps); get lights(): LightSettings; set lights(lights: LightSettings); /** Adjust the solar light direction based on a date and time at a geographic location. * This replaces `this.lights` with a copy that records the time point and the computed direction. * @param timePoint The time in UNIX milliseconds. * @param location The geographic location; or an iModel, in which case the iModel's [[EcefLocation]] is used. * @see [[sunTime]] to get the current sun time. * @see [[clearSunTime]] to clear the time point. * @note If `location` is an iModel lacking an EcefLocation, a location in Exton, Pennsylvania will be used to compute the light direction instead. */ setSunTime(timePoint: number, location: IModel | Cartographic): void; /** Clear the solar time point stored in `this.lights.solarLight`. * @note This does not affect the solar light direction. * @see [[sunTime]] to get the current sun time. * @see [[setSunTime]] to set the time point and the solar light direction derived from it. */ clearSunTime(): void; /** The time point from which the solar light direction was derived, in UNIX milliseconds. * @see [[setSunTime]] to change the time point and solar direction. * @see [[clearSunTime]] to reset the time point to `undefined`. */ get sunTime(): number | undefined; /** Get the plan projection settings associated with the specified model, if defined. */ getPlanProjectionSettings(modelId: Id64String): PlanProjectionSettings | undefined; /** Set or clear the plan projection settings associated with the specified model. */ setPlanProjectionSettings(modelId: Id64String, settings: PlanProjectionSettings | undefined): void; /** An iterator over all of the defined plan projection settings. The iterator includes the Id of the model associated with each settings object. */ get planProjectionSettings(): Iterable<[Id64String, PlanProjectionSettings]> | undefined; } //# sourceMappingURL=DisplayStyleSettings.d.ts.map