| addAttrib() | visSurvey::HorizonDisplay | virtual |
| addChild(osg::Node *) | visBase::VisualObjectImpl | protected |
| addNodeState(T *ns) | visBase::DataObject | inline |
| addSection(const EM::SectionID &, TaskRunner *) | visSurvey::HorizonDisplay | privatevirtual |
| addsectionids_ | visSurvey::EMObjectDisplay | protected |
| allowMaterialEdit() const | visSurvey::HorizonDisplay | inlinevirtual |
| allowShading(bool) | visSurvey::HorizonDisplay | virtual |
| allowshading_ | visSurvey::HorizonDisplay | private |
| allowsPicks() const | visSurvey::HorizonDisplay | inlinevirtual |
| as_ | visSurvey::HorizonDisplay | private |
| attachCB(const NotifierAccess &, const CallBack &, bool onlyifnew=false) const | CallBacker | |
| attachCB(const NotifierAccess *notif, const CallBack &cb, bool onlyifnew=false) const | CallBacker | |
| burstalertison_ | visSurvey::EMObjectDisplay | protected |
| calcDist(const Coord3 &) const | visSurvey::HorizonDisplay | virtual |
| calculateLockedPoints() | visSurvey::HorizonDisplay | private |
| CallBacker() | CallBacker | |
| CallBacker(const CallBacker &) | CallBacker | |
| canAddAttrib(int nrattribstoadd=1) const | visSurvey::HorizonDisplay | virtual |
| canBDispOn2DViewer() const | visSurvey::HorizonDisplay | inlinevirtual |
| canEnableTextureInterpolation() const | visSurvey::HorizonDisplay | inlinevirtual |
| canHaveMultipleAttribs() const | visSurvey::HorizonDisplay | virtual |
| canHaveMultipleTextures() const | visSurvey::HorizonDisplay | inlinevirtual |
| canRemoveAttrib() const | visSurvey::HorizonDisplay | virtual |
| canSetColTabSequence() const | visSurvey::HorizonDisplay | virtual |
| canShowTexture() const | visSurvey::HorizonDisplay | |
| channel2rgba_ | visSurvey::EMObjectDisplay | protected |
| childIndex(const osg::Node *) const | visBase::VisualObjectImpl | protected |
| clearSelections() | visSurvey::HorizonDisplay | virtual |
| clickCB(CallBacker *) | visSurvey::EMObjectDisplay | protectedvirtual |
| coltabmappers_ | visSurvey::HorizonDisplay | private |
| coltabsequences_ | visSurvey::HorizonDisplay | private |
| createDisplayDataPacks(int attrib, const DataPointSet *) | visSurvey::HorizonDisplay | private |
| createReceiverForCurrentThread() | CallBacker | static |
| createSection(const EM::SectionID &) const | visSurvey::HorizonDisplay | private |
| ctrldown_ | visSurvey::EMObjectDisplay | protected |
| curshiftidx_ | visSurvey::HorizonDisplay | private |
| curtextureidx_ | visSurvey::HorizonDisplay | private |
| cValNameOffset() | visSurvey::SurveyObject | inlineprotectedstatic |
| DataObject() | visBase::DataObject | protected |
| deSelect() const | visBase::DataObject | |
| deSelection() | visBase::VisualObject | inlinevirtual |
| detachAllNotifiers() const | CallBacker | protected |
| detachCB(const NotifierAccess &, const CallBack &) const | CallBacker | |
| detachCB(const NotifierAccess *notif, const CallBack &cb) const | CallBacker | inline |
| dispdatapackids_ | visSurvey::HorizonDisplay | private |
| displayedOnlyAtSections() const | visSurvey::HorizonDisplay | virtual |
| displayIntersectionLines(bool) | visSurvey::HorizonDisplay | |
| displayintersectionlines_ | visSurvey::HorizonDisplay | private |
| displayonlyatsections_ | visSurvey::EMObjectDisplay | protected |
| displaysIntersectionLines() const | visSurvey::HorizonDisplay | |
| displaysSurfaceGrid() const | visSurvey::HorizonDisplay | |
| displaysSurfaceGrid(bool) | visSurvey::HorizonDisplay | |
| displaySurfaceData(int attrib, int auxdatanr) | visSurvey::HorizonDisplay | |
| displaysurfacegrid_ | visSurvey::HorizonDisplay | private |
| doAddNodeState(NodeState *ns) | visBase::DataObject | protected |
| doOtherObjectsMoved(const ObjectSet< const SurveyObject > &, int whichobj) | visSurvey::HorizonDisplay | virtual |
| drawHorizonOnZSlice(const TrcKeyZSampling &, const EM::SectionID &, IntersectionData &) const | visSurvey::HorizonDisplay | private |
| drawstyle_ | visSurvey::EMObjectDisplay | protected |
| editor_ | visSurvey::EMObjectDisplay | protected |
| em_ | visSurvey::EMObjectDisplay | protected |
| emChangeCB(CallBacker *) | visSurvey::HorizonDisplay | privatevirtual |
| emchangedata_ | visSurvey::EMObjectDisplay | protected |
| emobject_ | visSurvey::EMObjectDisplay | protected |
| EMObjectDisplay() | visSurvey::EMObjectDisplay | protected |
| enableAttrib(int attrib, bool yn) | visSurvey::HorizonDisplay | virtual |
| enabled_ | visSurvey::HorizonDisplay | private |
| enableedit_ | visSurvey::EMObjectDisplay | protected |
| enabletextureinterp_ | visSurvey::HorizonDisplay | private |
| enableTextureInterpolation(bool) | visSurvey::HorizonDisplay | virtual |
| enableTraversal(unsigned int mask, bool yn=true) | visBase::DataObject | |
| errmsg_ | visSurvey::SurveyObject | mutableprotected |
| eventcatcher_ | visSurvey::EMObjectDisplay | protected |
| fillPar(IOPar &) const | visSurvey::HorizonDisplay | virtual |
| findClosestNode(const Coord3 &) const | visSurvey::HorizonDisplay | privatevirtual |
| geometryColRange() const | visSurvey::HorizonDisplay | |
| geometryRowRange() const | visSurvey::HorizonDisplay | |
| getAllowedDataType() const | visSurvey::HorizonDisplay | inlinevirtual |
| getAttribTransparency(int) const | visSurvey::HorizonDisplay | virtual |
| getAttributeFormat(int attrib) const | visSurvey::HorizonDisplay | virtual |
| getBoundingBox(Coord3 &min, Coord3 &max) const | visBase::VisualObject | virtual |
| getChannelIndex(const char *nm) const | visSurvey::HorizonDisplay | private |
| getChannels2RGBA() | visSurvey::HorizonDisplay | virtual |
| getChannels2RGBA() const | visSurvey::HorizonDisplay | |
| getClassName() const | visBase::DataObject | inlinevirtual |
| getColor() const | visSurvey::HorizonDisplay | virtual |
| getColTabMapper(int) const | visSurvey::HorizonDisplay | virtual |
| getColTabSequence(int attr) const | visSurvey::HorizonDisplay | virtual |
| getCommonViewer() | visBase::DataObject | static |
| getDataPackID(int attrib) const | visSurvey::HorizonDisplay | virtual |
| getDataPackMgrID() const | visSurvey::HorizonDisplay | inlinevirtual |
| getDefaultPixelDensity() | visBase::DataObject | static |
| getDisplayedDataPackID(int attrib) const | visSurvey::HorizonDisplay | virtual |
| getDisplayTransformation() const | visBase::DataObject | inlinevirtual |
| getGLInfo() | visBase::DataObject | static |
| getHorizonDisplay(const DBKey &) | visSurvey::HorizonDisplay | static |
| getHorizonSection(const EM::SectionID &) | visSurvey::HorizonDisplay | |
| getID(const osg::Node *) | visBase::DataObject | static |
| getIntersectionLines() const | visSurvey::HorizonDisplay | |
| getMaterial() | visSurvey::HorizonDisplay | virtual |
| visSurvey::EMObjectDisplay::getMaterial() const | visBase::VisualObjectImpl | inline |
| getMousePosInfo(const visBase::EventInfo &e, IOPar &i) const | visSurvey::HorizonDisplay | inlinevirtual |
| getMousePosInfo(const visBase::EventInfo &pos, Coord3 &, BufferString &val, BufferString &info) const | visSurvey::HorizonDisplay | virtual |
| getNodeState(int idx) | visBase::DataObject | |
| getOrCreateIntersectionData(ObjectSet< IntersectionData > &pool) | visSurvey::HorizonDisplay | private |
| getPixelDensity() const | visBase::DataObject | virtual |
| getRandomPos(DataPointSet &, TaskRunner *) const | visSurvey::HorizonDisplay | virtual |
| getRandomPosCache(int, DataPointSet &) const | visSurvey::HorizonDisplay | virtual |
| getResolution() const | visSurvey::HorizonDisplay | virtual |
| getResolutionName(int) const | visSurvey::HorizonDisplay | virtual |
| getSection(int id) const | visSurvey::HorizonDisplay | |
| getSectionID(int visid) const | visSurvey::HorizonDisplay | virtual |
| getSectionIDs() const | visSurvey::HorizonDisplay | inline |
| getSectionName(int secidx) const | visSurvey::HorizonDisplay | |
| getSelSpec(int channel, int version=0) const | visSurvey::HorizonDisplay | virtual |
| getSelSpecs(int attrib) const | visSurvey::HorizonDisplay | virtual |
| getStateSet() | visBase::DataObject | protectedvirtual |
| getTranslation() const | visSurvey::HorizonDisplay | virtual |
| glInfoAvailable() | visBase::DataObject | inlinestatic |
| handleEmChange(const EM::EMObjectCallbackData &) | visSurvey::HorizonDisplay | privatevirtual |
| hasColor() const | visSurvey::HorizonDisplay | inlinevirtual |
| hasDepth(int attrib) const | visSurvey::HorizonDisplay | |
| hasmoved | visSurvey::EMObjectDisplay | protected |
| hasSingleColorFallback() const | visSurvey::HorizonDisplay | inlinevirtual |
| hasStoredAttrib(int attrib) const | visSurvey::HorizonDisplay | |
| HorizonDisplay() | visSurvey::HorizonDisplay | |
| id() const | visBase::DataObject | inline |
| initAdaptiveMouseCursor(CallBacker *eventcb, int objid, int inplanedragkeys, MouseCursor &) | visSurvey::SurveyObject | protected |
| initSelectionDisplay(bool erase) | visSurvey::HorizonDisplay | private |
| insertChild(int pos, osg::Node *) | visBase::VisualObjectImpl | protected |
| intersectiondata_ | visSurvey::HorizonDisplay | private |
| intersectionlinematerial_ | visSurvey::HorizonDisplay | private |
| isAttribEnabled(int attrib) const | visSurvey::HorizonDisplay | virtual |
| isCapsule() const | CallBacker | inlinevirtual |
| isNotifierAttached(const NotifierAccess *) const | CallBacker | |
| isOK() const | visBase::DataObject | inlinevirtual |
| isOn() const | visBase::DataObject | virtual |
| isPickable(bool actively=true) const | visBase::DataObject | |
| isRightHandSystem() const | visBase::VisualObjectImpl | inlinevirtual |
| isSelected() const | visBase::DataObject | virtual |
| isTraversalEnabled(unsigned int mask) const | visBase::DataObject | |
| isValidIntersectionObject(const ObjectSet< const SurveyObject > &, int &objidx, int objid) const | visSurvey::HorizonDisplay | private |
| isVerticalPlane() const | visSurvey::HorizonDisplay | inlinevirtual |
| isVisualizationThread() | visBase::DataObject | static |
| locked_ | visSurvey::SurveyObject | protected |
| lockedpts_ | visSurvey::HorizonDisplay | private |
| lockedShown() const | visSurvey::HorizonDisplay | |
| locknotifier | visSurvey::EMObjectDisplay | protected |
| material_ | visBase::VisualObjectImpl | protected |
| materialChangeCB(CallBacker *) | visBase::VisualObjectImpl | protectedvirtual |
| maxDist() const | visSurvey::HorizonDisplay | virtual |
| maxintersectionlinethickness_ | visSurvey::HorizonDisplay | private |
| mDefaultFactoryInstantiation(visSurvey::SurveyObject, HorizonDisplay,"HorizonDisplay", toUiString(sFactoryKeyword())) void setDisplayTransformation(const mVisTrans *) | visSurvey::HorizonDisplay | |
| mODTextTranslationClass(HorizonDisplay) friend class HorizonPathIntersector | visSurvey::HorizonDisplay | private |
| name() const | visBase::DataObject | |
| nontexturecol_ | visSurvey::EMObjectDisplay | mutableprotected |
| nontexturecolisset_ | visSurvey::EMObjectDisplay | mutableprotected |
| nrAttribs() const | visSurvey::HorizonDisplay | virtual |
| nrResolutions() const | visSurvey::HorizonDisplay | virtual |
| nrTextures(int attrib) const | visSurvey::HorizonDisplay | virtual |
| olddisplayedcolranges_ | visSurvey::HorizonDisplay | private |
| olddisplayedrowranges_ | visSurvey::HorizonDisplay | private |
| oldhortexhandlers_ | visSurvey::HorizonDisplay | private |
| oldsectionids_ | visSurvey::HorizonDisplay | private |
| osgNode(bool skipswitch=false) | visBase::DataObject | |
| osgNode(bool skipswitch=false) const | visBase::DataObject | |
| otherObjectsMoved(const ObjectSet< const SurveyObject > &, int whichobj) | visSurvey::HorizonDisplay | privatevirtual |
| parcolrg_ | visSurvey::HorizonDisplay | private |
| parent_ | visBase::DataObject | protected |
| parentline_ | visSurvey::HorizonDisplay | private |
| parmid_ | visSurvey::EMObjectDisplay | protected |
| parposattrshown_ | visSurvey::EMObjectDisplay | protected |
| parrowrg_ | visSurvey::HorizonDisplay | private |
| parsections_ | visSurvey::EMObjectDisplay | protected |
| polygonFinishedCB(CallBacker *) | visSurvey::EMObjectDisplay | protected |
| posattribmarkers_ | visSurvey::EMObjectDisplay | protected |
| posattribs_ | visSurvey::EMObjectDisplay | protected |
| readLock() | visBase::VisualObjectImpl | |
| readUnLock() | visBase::VisualObjectImpl | |
| removeAttrib(int attrib) | visSurvey::HorizonDisplay | virtual |
| removeChild(osg::Node *) | visBase::VisualObjectImpl | protected |
| removeEMStuff() | visSurvey::HorizonDisplay | privatevirtual |
| removeNodeState(NodeState *) | visBase::DataObject | |
| removeReceiverForCurrentThread() | CallBacker | static |
| removeSectionDisplay(const EM::SectionID &) | visSurvey::HorizonDisplay | privatevirtual |
| requestSingleRedraw() | visBase::DataObject | static |
| resolution_ | visSurvey::HorizonDisplay | private |
| restoresessupdate_ | visSurvey::EMObjectDisplay | protected |
| rightClickable() const | visBase::DataObject | inlinevirtual |
| rightClicked() | visBase::VisualObject | inlinevirtual |
| rightClickedEventInfo() const | visBase::VisualObject | inline |
| rightClickedPath() const | visBase::VisualObject | virtual |
| righthandsystem_ | visBase::VisualObjectImpl | protected |
| s3dgeom_ | visSurvey::SurveyObject | protected |
| saveinsessionsflag_ | visSurvey::SurveyObject | protected |
| scene_ | visSurvey::SurveyObject | protected |
| secnames_ | visSurvey::HorizonDisplay | private |
| sectionlockedpts_ | visSurvey::HorizonDisplay | private |
| sections_ | visSurvey::HorizonDisplay | private |
| select() const | visBase::DataObject | |
| selectable() const | visBase::VisualObject | inlinevirtual |
| selectChildren() | visSurvey::HorizonDisplay | |
| selectedTexture(int attrib) const | visSurvey::HorizonDisplay | virtual |
| selection() | visBase::VisualObject | inlinevirtual |
| selectionids_ | visSurvey::EMObjectDisplay | protected |
| selections_ | visSurvey::HorizonDisplay | private |
| selectors_ | visSurvey::EMObjectDisplay | protected |
| selectParent(const TrcKey &) | visSurvey::HorizonDisplay | |
| selectTexture(int attrib, int textureidx) | visSurvey::HorizonDisplay | virtual |
| serialize(const char *filename, bool binary=false) | visBase::DataObject | |
| setAttribShift(int channel, const TypeSet< float > &shifts) | visSurvey::HorizonDisplay | |
| setAttribTransparency(int, unsigned char) | visSurvey::HorizonDisplay | virtual |
| setChannels2RGBA(visBase::TextureChannel2RGBA *) | visSurvey::HorizonDisplay | virtual |
| setColTabMapper(int, const ColTab::Mapper &, TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| setColTabSequence(int attr, const ColTab::Sequence &, TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| setCommonViewer(osgViewer::CompositeViewer *) | visBase::DataObject | static |
| setDepthAsAttrib(int) | visSurvey::HorizonDisplay | |
| setDisplayDataPackIDs(int attrib, const TypeSet< DataPack::ID > &) | visSurvey::HorizonDisplay | |
| visBase::VisualObjectImpl::setDisplayTransformation(const visBase::Transformation *) | visBase::DataObject | virtual |
| setEMObject(const EM::ObjectID &, TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| setGroupNode(osg::Group *) | visBase::VisualObjectImpl | protectedvirtual |
| setID(int nid) | visBase::DataObject | |
| setIntersectLineMaterial(visBase::Material *) | visSurvey::HorizonDisplay | |
| setLineStyle(const OD::LineStyle &) | visSurvey::HorizonDisplay | virtual |
| setLockable() | visBase::VisualObjectImpl | |
| setMaterial(Material *) | visBase::VisualObjectImpl | virtual |
| setName(const uiString &) | visBase::DataObject | virtual |
| setOnlyAtSectionsDisplay(bool yn) | visSurvey::HorizonDisplay | virtual |
| setOsgNode(T *t) | visBase::DataObject | inlineprotected |
| setParent(DataObjectGroup *g) | visBase::DataObject | inline |
| setPickable(bool actively, bool passively=true) | visBase::DataObject | |
| setPixelDensity(float) | visSurvey::HorizonDisplay | virtual |
| setRandomPosData(int, const DataPointSet *, TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| setResolution(int, TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| setRightHandSystem(bool yn) | visBase::VisualObjectImpl | inlinevirtual |
| setSceneEventCatcher(visBase::EventCatcher *) | visSurvey::HorizonDisplay | virtual |
| setSectionDisplayRestore(bool) | visSurvey::HorizonDisplay | |
| setSelectable(bool yn) | visBase::VisualObject | inline |
| setSelSpecs(int attrib, const TypeSet< Attrib::SelSpec > &) | visSurvey::HorizonDisplay | virtual |
| setTranslation(const Coord3 &) | visSurvey::HorizonDisplay | virtual |
| setVisualizationThread(Threads::ThreadID) | visBase::DataObject | static |
| setZAxisTransform(ZAxisTransform *, TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| shifts_ | visSurvey::HorizonDisplay | private |
| showlock_ | visSurvey::HorizonDisplay | private |
| showLocked(bool) | visSurvey::HorizonDisplay | |
| showParentLine(bool) | visSurvey::HorizonDisplay | |
| showPosAttrib(int attr, bool yn) | visSurvey::HorizonDisplay | virtual |
| showSelections(bool) | visSurvey::HorizonDisplay | |
| showsTexture() const | visSurvey::HorizonDisplay | |
| sids_ | visSurvey::HorizonDisplay | private |
| sKeyColRange() | visSurvey::HorizonDisplay | privatestatic |
| sKeyEarthModelID() | visSurvey::EMObjectDisplay | protectedstatic |
| sKeyEdit() | visSurvey::EMObjectDisplay | protectedstatic |
| sKeyIntersectLineMaterialID() | visSurvey::HorizonDisplay | privatestatic |
| sKeyIsOn() | visBase::VisualObjectImpl | static |
| sKeyLineStyle() | visSurvey::EMObjectDisplay | protectedstatic |
| sKeyMaterial() | visBase::VisualObjectImpl | static |
| sKeyMaterialID() | visBase::VisualObjectImpl | static |
| sKeyOnlyAtSections() | visSurvey::EMObjectDisplay | protectedstatic |
| sKeyPosAttrShown() | visSurvey::EMObjectDisplay | protectedstatic |
| sKeyResolution() | visSurvey::HorizonDisplay | privatestatic |
| sKeyRowRange() | visSurvey::HorizonDisplay | privatestatic |
| sKeySectionID() | visSurvey::HorizonDisplay | privatestatic |
| sKeySections() | visSurvey::EMObjectDisplay | protectedstatic |
| sKeyShift() | visSurvey::HorizonDisplay | privatestatic |
| sKeySurfaceGrid() | visSurvey::HorizonDisplay | privatestatic |
| sKeyTexture() | visSurvey::HorizonDisplay | privatestatic |
| sKeyZValues() | visSurvey::HorizonDisplay | privatestatic |
| stopReceivingNotifications() const | CallBacker | inline |
| SurveyObject() | visSurvey::SurveyObject | protected |
| survname_ | visSurvey::SurveyObject | protected |
| swapAttribs(int attrib0, int attrib1) | visSurvey::HorizonDisplay | virtual |
| textureInterpolationEnabled() const | visSurvey::HorizonDisplay | inlinevirtual |
| transformation_ | visSurvey::EMObjectDisplay | protected |
| translation_ | visSurvey::HorizonDisplay | private |
| translationpos_ | visSurvey::HorizonDisplay | private |
| traverseLine(const TrcKeyPath &, const TypeSet< Coord > &, const Interval< float > &zrg, EM::SectionID, IntersectionData &) const | visSurvey::HorizonDisplay | private |
| triggerDeSel() | visBase::VisualObject | inlineprotectedvirtual |
| triggerRightClick(const EventInfo *) | visBase::VisualObject | protectedvirtual |
| triggerSel() | visBase::VisualObject | inlineprotectedvirtual |
| tryReadLock() | visBase::VisualObjectImpl | |
| tryWriteLock() | visBase::VisualObjectImpl | |
| turnOn(bool yn) | visBase::DataObject | virtual |
| updateAuxData() | visSurvey::HorizonDisplay | virtual |
| updateFromEM(TaskRunner *) | visSurvey::HorizonDisplay | virtual |
| updateFromMPE() | visSurvey::HorizonDisplay | virtual |
| updateIntersectionLines(const ObjectSet< const SurveyObject > &, int whichobj) | visSurvey::HorizonDisplay | private |
| updatelock_ | visSurvey::HorizonDisplay | private |
| updateLockedPointsColor() | visSurvey::HorizonDisplay | private |
| updateNodemask() | visBase::DataObject | protected |
| updatePosAttrib(int attrib) | visSurvey::EMObjectDisplay | protectedvirtual |
| updateSectionSeeds(const ObjectSet< const SurveyObject > &, int whichobj) | visSurvey::HorizonDisplay | private |
| updateSel() const | visBase::DataObject | |
| updateSelections() | visSurvey::HorizonDisplay | privatevirtual |
| updateSingleColor() | visSurvey::HorizonDisplay | private |
| updatestagenr_ | visSurvey::SurveyObject | protected |
| usePar(const IOPar &) | visSurvey::HorizonDisplay | virtual |
| userrefs_ | visSurvey::SurveyObject | protected |
| usesColor() const | visSurvey::HorizonDisplay | virtual |
| usesTexture() const | visSurvey::HorizonDisplay | |
| usestexture_ | visSurvey::HorizonDisplay | private |
| useTexture(bool yn, bool trigger=false) | visSurvey::HorizonDisplay | |
| validtexture_ | visSurvey::HorizonDisplay | private |
| VisualObject(bool selectable=false) | visBase::VisualObject | protected |
| VisualObjectImpl(bool selectable) | visBase::VisualObjectImpl | protected |
| writeLock() | visBase::VisualObjectImpl | |
| writeUnLock() | visBase::VisualObjectImpl | |
| zaxistransform_ | visSurvey::EMObjectDisplay | protected |
| ~CallBacker() | CallBacker | virtual |
| ~DataObject() | visBase::DataObject | protected |
| ~EMObjectDisplay() | visSurvey::EMObjectDisplay | protected |
| ~HorizonDisplay() | visSurvey::HorizonDisplay | private |
| ~SurveyObject() | visSurvey::SurveyObject | protected |
| ~VisualObject() | visBase::VisualObject | protected |
| ~VisualObjectImpl() | visBase::VisualObjectImpl | protectedvirtual |