NVDA Helper
In-process and lite high-speed utilities for NVDA
VBufStorage_controlFieldNode_t Class Reference

a a field node that represents a control in a buffer. More...

#include <storage.h>

Inheritance diagram for VBufStorage_controlFieldNode_t:
VBufStorage_fieldNode_t AdobeAcrobatVBufStorage_controlFieldNode_t MshtmlVBufStorage_controlFieldNode_t VBufStorage_referenceNode_t

Public Member Functions

bool getIdentifier (int *docHandle, int *ID)
 retreaves the node's doc handle and ID.
 
virtual std::wstring getDebugInfo () const
 
- Public Member Functions inherited from VBufStorage_fieldNode_t
bool matchAttributes (const std::vector< std::wstring > &attribs, const std::wregex &regexp)
 work out if the attributes in the given string exist on this node.
 
VBufStorage_controlFieldNode_tgetParent ()
 points to this node's parent control field node.
 
VBufStorage_fieldNode_tgetPrevious ()
 points to the node directly before this node that shares the same parent as this node.
 
VBufStorage_fieldNode_tgetNext ()
 points to the node directly after this node that shares the same parent as this node.
 
VBufStorage_fieldNode_tgetFirstChild ()
 points to this node's first child.
 
VBufStorage_fieldNode_tgetLastChild ()
 points to this node's last child.
 
bool addAttribute (const std::wstring &name, const std::wstring &value)
 Adds an attribute to this field.
 
std::optional< std::wstring > getAttribute (const std::wstring &name)
 Gets an attribute value for this field.
 
std::wstring getAttributesString () const
 
virtual void getTextInRange (int startOffset, int endOffset, std::wstring &text, bool useMarkup=false, bool(*filter)(VBufStorage_fieldNode_t *)=NULL)
 fetches the text between given offsets in this node and its descendants, with optional markup.
 
int getLength ()
 Retreave the length of this node.
 

Public Attributes

const VBufStorage_controlFieldNodeIdentifier_t identifier
 uniquely identifies this control in its buffer.
 
bool requiresParentUpdate {false}
 If true, When this node is invalidated in a backend, its parent will be invalidated instead.
 
bool allowReuseInAncestorUpdate {true}
 If true, this node is allowing itself to be reused within a subtree that is being re-rendered.
 
bool denyReuseIfPreviousSiblingsChanged {false}
 If True, this node cannot be moved and reused within a subtree being re-rendered, if its previous siblings have changed in anyway.
 
bool alwaysRerenderChildren {false}
 If true, this node's children will always be re-rendered along with this node when being re-rendered.
 
bool alwaysRerenderDescendants {false}
 If true, all this node's descendants will always be re-rendered along with this node when being re-rendered.
 
- Public Attributes inherited from VBufStorage_fieldNode_t
bool isBlock
 true if this field should cause a line break at its start and end when a buffer is calculating lines.
 
bool isHidden
 True if this node his hidden - searches will not locate this node.
 

Protected Member Functions

virtual void generateMarkupTagName (std::wstring &text)
 generates this field's markup tag name
 
virtual void generateAttributesForMarkupOpeningTag (std::wstring &text, int startOffset, int endOffset)
 Generates the attributes within a markup opening tag.
 
virtual void disassociateFromBuffer (VBufStorage_buffer_t *buffer)
 Disassociates this node from its buffer.
 
 VBufStorage_controlFieldNode_t (int docHandle, int ID, bool isBlock)
 constructor.
 
- Protected Member Functions inherited from VBufStorage_fieldNode_t
VBufStorage_fieldNode_tnextNodeInTree (int direction, VBufStorage_fieldNode_t *limitNode, int *relativeStartOffset)
 moves to the next node, in depth-first order.
 
int calculateOffsetInTree () const
 Calculates the offset for this node relative to the surrounding tree.
 
virtual VBufStorage_textFieldNode_tlocateTextFieldNodeAtOffset (int offset, int *relativeOffset)
 Locates the descendant textFieldNode that is positioned at the given offset in this node.
 
void generateMarkupOpeningTag (std::wstring &text, int startOffset, int endOffset)
 generates a markup opening tag for this field.
 
void generateMarkupClosingTag (std::wstring &text)
 generates a markup closing tag for this field.
 
 VBufStorage_fieldNode_t (int length, bool isBlock)
 constructor.
 
virtual ~VBufStorage_fieldNode_t ()
 destructor
 

Friends

class VBufStorage_buffer_t
 

Additional Inherited Members

- Protected Attributes inherited from VBufStorage_fieldNode_t
VBufStorage_controlFieldNode_tparent
 points to this node's parent control field node.
 
VBufStorage_fieldNode_tprevious
 points to the node directly before this node that shares the same parent as this node.
 
VBufStorage_fieldNode_tnext
 points to the node directly after this node that shares the same parent as this node.
 
VBufStorage_fieldNode_tfirstChild
 points to this node's first child.
 
VBufStorage_fieldNode_tlastChild
 points to this node's last child.
 
int length
 The length of this node in characters.
 
VBufStorage_attributeMap_t attributes
 a map to hold attributes for this field.
 

Detailed Description

a a field node that represents a control in a buffer.

Control fields contain other control fields or text fields, they can also be uniquely identified.

Constructor & Destructor Documentation

◆ VBufStorage_controlFieldNode_t()

VBufStorage_controlFieldNode_t::VBufStorage_controlFieldNode_t ( int docHandle,
int ID,
bool isBlock )
protected

constructor.

Parameters
docHandlethe docHandle of the control
IDthe ID of the control
isBlocklines lines should always break at the start and end of this control in a buffer.

References VBufStorage_controlFieldNodeIdentifier_t::docHandle, VBufStorage_controlFieldNodeIdentifier_t::ID, identifier, and LOG_DEBUG.

Member Function Documentation

◆ generateMarkupTagName()

void VBufStorage_controlFieldNode_t::generateMarkupTagName ( std::wstring & text)
protectedvirtual

generates this field's markup tag name

Parameters
textwhere to place the generated name

Implements VBufStorage_fieldNode_t.

Reimplemented in VBufStorage_referenceNode_t.

◆ generateAttributesForMarkupOpeningTag()

void VBufStorage_controlFieldNode_t::generateAttributesForMarkupOpeningTag ( std::wstring & text,
int startOffset,
int endOffset )
protectedvirtual

Generates the attributes within a markup opening tag.

Parameters
textwhere to place the generated text
theoffset within the node where text is being requested from
theoffset within the node the text is being requested to.

Reimplemented from VBufStorage_fieldNode_t.

Reimplemented in MshtmlVBufStorage_controlFieldNode_t.

References VBufStorage_controlFieldNodeIdentifier_t::docHandle, VBufStorage_fieldNode_t::generateAttributesForMarkupOpeningTag(), VBufStorage_controlFieldNodeIdentifier_t::ID, and identifier.

Referenced by MshtmlVBufStorage_controlFieldNode_t::generateAttributesForMarkupOpeningTag().

◆ disassociateFromBuffer()

void VBufStorage_controlFieldNode_t::disassociateFromBuffer ( VBufStorage_buffer_t * buffer)
protectedvirtual

Disassociates this node from its buffer.

Parameters
bufferthe buffer to disassociate from

Reimplemented from VBufStorage_fieldNode_t.

References VBufStorage_fieldNode_t::disassociateFromBuffer(), VBufStorage_buffer_t::forgetControlFieldNode(), LOG_DEBUG, and nhAssert.

◆ getIdentifier()

bool VBufStorage_controlFieldNode_t::getIdentifier ( int * docHandle,
int * ID )

retreaves the node's doc handle and ID.

Parameters
docHandlea memory location in which the doc handle will be placed.
IDthe memory location in which the ID will be placed.

References VBufStorage_controlFieldNodeIdentifier_t::docHandle, VBufStorage_controlFieldNodeIdentifier_t::ID, and identifier.

Referenced by VBufBackend_t::update().

◆ getDebugInfo()

Friends And Related Symbol Documentation

◆ VBufStorage_buffer_t

friend class VBufStorage_buffer_t
friend

Member Data Documentation

◆ identifier

◆ requiresParentUpdate

bool VBufStorage_controlFieldNode_t::requiresParentUpdate {false}

If true, When this node is invalidated in a backend, its parent will be invalidated instead.

Parent invalidation is also recursive, so that if the parent node sets this variable to true, then the first ancestor that does not set this to true is used for invalidation. An example where this might be set is on parts of a table where it is necessary for the table itself to be re-rendered if any part changes.

Referenced by MshtmlVBufBackend_t::fillVBuf(), getDebugInfo(), and VBufBackend_t::invalidateSubtree().

◆ allowReuseInAncestorUpdate

bool VBufStorage_controlFieldNode_t::allowReuseInAncestorUpdate {true}

If true, this node is allowing itself to be reused within a subtree that is being re-rendered.

This is true by default, but may be set to false if this node or a descendant needs to be re-rendered but its requiresParentUpdate is true. In that case, the re-render will happen higher up in the ancestors, but ensures that this node is not reused.

Referenced by MshtmlVBufBackend_t::fillVBuf(), getDebugInfo(), VBufBackend_t::invalidateSubtree(), and markNodeAsNonreusableIfInAncestor().

◆ denyReuseIfPreviousSiblingsChanged

bool VBufStorage_controlFieldNode_t::denyReuseIfPreviousSiblingsChanged {false}

If True, this node cannot be moved and reused within a subtree being re-rendered, if its previous siblings have changed in anyway.

An example might be where a table is re-rendered and a new row is added in the middle. In this case, all rows and cells after the new row must not be reused as their table coordinates would have changed.

Referenced by getDebugInfo().

◆ alwaysRerenderChildren

bool VBufStorage_controlFieldNode_t::alwaysRerenderChildren {false}

If true, this node's children will always be re-rendered along with this node when being re-rendered.

For example: a table row might set this to ensure that if it is re-rendered, all its cells are as well.

Referenced by getDebugInfo(), and VBufBackend_t::reuseExistingNodeInRender().

◆ alwaysRerenderDescendants

bool VBufStorage_controlFieldNode_t::alwaysRerenderDescendants {false}

If true, all this node's descendants will always be re-rendered along with this node when being re-rendered.

Referenced by VBufStorage_buffer_t::addControlFieldNode(), MshtmlVBufBackend_t::fillVBuf(), GeckoVBufBackend_t::renderThread_winEventProcHook(), and VBufBackend_t::reuseExistingNodeInRender().


The documentation for this class was generated from the following files: