void SVGTextContentElement::SelectSubString(uint32_t charnum, uint32_t nchars, ErrorResult& rv) { SVGTextFrame* textFrame = GetSVGTextFrame(); if (!textFrame) return; rv = textFrame->SelectSubString(this, charnum, nchars); }
float SVGTextContentElement::GetSubStringLength(uint32_t charnum, uint32_t nchars, ErrorResult& rv) { SVGTextFrame* textFrame = GetSVGTextFrame(); if (!textFrame) return 0.0f; float length = 0.0f; rv = textFrame->GetSubStringLength(this, charnum, nchars, &length); return length; }
int32_t SVGTextContentElement::GetNumberOfChars() { Maybe<int32_t> num = GetNonLayoutDependentNumberOfChars(); if (num) { return *num; } SVGTextFrame* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetNumberOfChars(this) : 0; }
already_AddRefed<nsISVGPoint> SVGTextContentElement::GetEndPositionOfChar(uint32_t charnum, ErrorResult& rv) { SVGTextFrame* textFrame = GetSVGTextFrame(); if (!textFrame) { rv.Throw(NS_ERROR_FAILURE); return nullptr; } nsCOMPtr<nsISVGPoint> point; rv = textFrame->GetEndPositionOfChar(this, charnum, getter_AddRefs(point)); return point.forget(); }
float SVGTextContentElement::GetRotationOfChar(uint32_t charnum, ErrorResult& rv) { SVGTextFrame* textFrame = GetSVGTextFrame(); if (!textFrame) { rv.Throw(NS_ERROR_FAILURE); return 0.0f; } float rotation; rv = textFrame->GetRotationOfChar(this, charnum, &rotation); return rotation; }
already_AddRefed<SVGIRect> SVGTextContentElement::GetExtentOfChar(uint32_t charnum, ErrorResult& rv) { SVGTextFrame* textFrame = GetSVGTextFrame(); if (!textFrame) { rv.Throw(NS_ERROR_FAILURE); return nullptr; } RefPtr<SVGIRect> rect; rv = textFrame->GetExtentOfChar(this, charnum, getter_AddRefs(rect)); return rect.forget(); }
nsresult nsInlineFrame::AttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute, int32_t aModType) { nsresult rv = nsContainerFrame::AttributeChanged(aNameSpaceID, aAttribute, aModType); if (NS_FAILED(rv)) { return rv; } if (nsSVGUtils::IsInSVGTextSubtree(this)) { SVGTextFrame* f = static_cast<SVGTextFrame*>( nsLayoutUtils::GetClosestFrameOfType(this, LayoutFrameType::SVGText)); f->HandleAttributeChangeInDescendant(mContent->AsElement(), aNameSpaceID, aAttribute); } return NS_OK; }
nsresult nsInlineFrame::AttributeChanged(int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { nsresult rv = nsInlineFrameBase::AttributeChanged(aNameSpaceID, aAttribute, aModType); if (NS_FAILED(rv)) { return rv; } if (IsSVGText()) { SVGTextFrame* f = static_cast<SVGTextFrame*>( nsLayoutUtils::GetClosestFrameOfType(this, nsGkAtoms::svgTextFrame)); f->HandleAttributeChangeInDescendant(mContent->AsElement(), aNameSpaceID, aAttribute); } return NS_OK; }
int32_t SVGTextContentElement::GetCharNumAtPosition(nsISVGPoint& aPoint) { SVGTextFrame* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetCharNumAtPosition(this, &aPoint) : -1; }
float SVGTextContentElement::GetComputedTextLength() { SVGTextFrame* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetComputedTextLength(this) : 0.0f; }
int32_t SVGTextContentElement::GetNumberOfChars() { SVGTextFrame* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetNumberOfChars(this) : 0; }