already_AddRefed<nsIDOMSVGRect> SVGTextContentElement::GetExtentOfChar(uint32_t charnum, ErrorResult& rv) { nsCOMPtr<nsIDOMSVGRect> rect; if (FrameIsSVGText()) { nsSVGTextFrame2* textFrame = GetSVGTextFrame(); if (!textFrame) { rv.Throw(NS_ERROR_FAILURE); return nullptr; } rv = textFrame->GetExtentOfChar(this, charnum, getter_AddRefs(rect)); } else { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) { rv.Throw(NS_ERROR_FAILURE); return nullptr; } rv = metrics->GetExtentOfChar(charnum, getter_AddRefs(rect)); } return rect.forget(); }
float SVGTextContentElement::GetRotationOfChar(uint32_t charnum, ErrorResult& rv) { float rotation; if (FrameIsSVGText()) { nsSVGTextFrame2* textFrame = GetSVGTextFrame(); if (!textFrame) { rv.Throw(NS_ERROR_FAILURE); return 0.0f; } rv = textFrame->GetRotationOfChar(this, charnum, &rotation); } else { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) { rv.Throw(NS_ERROR_FAILURE); return 0.0f; } rv = metrics->GetRotationOfChar(charnum, &rotation); } return rotation; }
float SVGTextContentElement::GetSubStringLength(uint32_t charnum, uint32_t nchars, ErrorResult& rv) { if (FrameIsSVGText()) { nsSVGTextFrame2* textFrame = GetSVGTextFrame(); if (!textFrame) return 0.0f; uint32_t charcount = textFrame->GetNumberOfChars(this); if (charcount <= charnum || nchars > charcount - charnum) { rv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR); return 0.0f; } if (nchars == 0) return 0.0f; return textFrame->GetSubStringLength(this, charnum, nchars); } else { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) return 0.0f; uint32_t charcount = metrics->GetNumberOfChars(); if (charcount <= charnum || nchars > charcount - charnum) { rv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR); return 0.0f; } if (nchars == 0) return 0.0f; return metrics->GetSubStringLength(charnum, nchars); } }
/* nsIDOMSVGPoint getStartPositionOfChar (in unsigned long charnum); */ NS_IMETHODIMP nsSVGTextContentElement::GetStartPositionOfChar(PRUint32 charnum, nsIDOMSVGPoint **_retval) { *_retval = nsnull; nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) return NS_ERROR_FAILURE; return metrics->GetStartPositionOfChar(charnum, _retval); }
/* float getRotationOfChar (in unsigned long charnum); */ NS_IMETHODIMP nsSVGTextContentElement::GetRotationOfChar(PRUint32 charnum, float *_retval) { *_retval = 0.0; nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) return NS_ERROR_FAILURE; return metrics->GetRotationOfChar(charnum, _retval); }
/* float getComputedTextLength (); */ NS_IMETHODIMP nsSVGTextContentElement::GetComputedTextLength(float *_retval) { *_retval = 0.0; nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (metrics) *_retval = metrics->GetComputedTextLength(); return NS_OK; }
/* long getNumberOfChars (); */ NS_IMETHODIMP nsSVGTextContentElement::GetNumberOfChars(PRInt32 *_retval) { *_retval = 0; nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (metrics) *_retval = metrics->GetNumberOfChars(); return NS_OK; }
float SVGTextContentElement::GetComputedTextLength() { if (FrameIsSVGText()) { nsSVGTextFrame2* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetComputedTextLength(this) : 0.0f; } else { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); return metrics ? metrics->GetComputedTextLength() : 0.0f; } }
int32_t SVGTextContentElement::GetNumberOfChars() { if (FrameIsSVGText()) { nsSVGTextFrame2* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetNumberOfChars(this) : 0; } else { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); return metrics ? metrics->GetNumberOfChars() : 0; } }
int32_t SVGTextContentElement::GetCharNumAtPosition(nsISVGPoint& aPoint) { if (FrameIsSVGText()) { nsSVGTextFrame2* textFrame = GetSVGTextFrame(); return textFrame ? textFrame->GetCharNumAtPosition(this, &aPoint) : -1; } else { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); return metrics ? metrics->GetCharNumAtPosition(&aPoint) : -1; } }
already_AddRefed<nsISVGPoint> SVGTextContentElement::GetEndPositionOfChar(uint32_t charnum, ErrorResult& rv) { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) { rv.Throw(NS_ERROR_FAILURE); return nullptr; } nsCOMPtr<nsISVGPoint> point; rv = metrics->GetEndPositionOfChar(charnum, getter_AddRefs(point)); return point.forget(); }
float SVGTextContentElement::GetRotationOfChar(uint32_t charnum, ErrorResult& rv) { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) { rv.Throw(NS_ERROR_FAILURE); return 0.0f; } float _retval; rv = metrics->GetRotationOfChar(charnum, &_retval); return _retval; }
/* long getCharNumAtPosition (in nsIDOMSVGPoint point); */ NS_IMETHODIMP nsSVGTextContentElement::GetCharNumAtPosition(nsIDOMSVGPoint *point, PRInt32 *_retval) { // null check when implementing - this method can be used by scripts! if (!point) return NS_ERROR_DOM_SVG_WRONG_TYPE_ERR; *_retval = -1; nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (metrics) *_retval = metrics->GetCharNumAtPosition(point); return NS_OK; }
/* float getSubStringLength (in unsigned long charnum, in unsigned long nchars); */ NS_IMETHODIMP nsSVGTextContentElement::GetSubStringLength(PRUint32 charnum, PRUint32 nchars, float *_retval) { *_retval = 0.0f; nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); if (!metrics) return NS_OK; PRUint32 charcount = metrics->GetNumberOfChars(); if (charcount <= charnum || nchars > charcount - charnum) return NS_ERROR_DOM_INDEX_SIZE_ERR; if (nchars == 0) return NS_OK; *_retval = metrics->GetSubStringLength(charnum, nchars); return NS_OK; }
int32_t SVGTextContentElement::GetCharNumAtPosition(nsISVGPoint& aPoint) { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); return metrics ? metrics->GetCharNumAtPosition(&aPoint) : -1; }
int32_t SVGTextContentElement::GetNumberOfChars() { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); return metrics ? metrics->GetNumberOfChars() : 0; }
float SVGTextContentElement::GetComputedTextLength() { nsSVGTextContainerFrame* metrics = GetTextContainerFrame(); return metrics ? metrics->GetComputedTextLength() : 0.0f; }