本文整理汇总了C++中SVGSVGElement::height方法的典型用法代码示例。如果您正苦于以下问题:C++ SVGSVGElement::height方法的具体用法?C++ SVGSVGElement::height怎么用?C++ SVGSVGElement::height使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SVGSVGElement
的用法示例。
在下文中一共展示了SVGSVGElement::height方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: size
IntSize SVGImage::size() const
{
if (!m_page)
return IntSize();
Frame* frame = m_page->mainFrame();
SVGSVGElement* rootElement = static_cast<SVGDocument*>(frame->document())->rootElement();
if (!rootElement)
return IntSize();
SVGLength width = rootElement->width();
SVGLength height = rootElement->height();
IntSize svgSize;
if (width.unitType() == LengthTypePercentage)
svgSize.setWidth(rootElement->relativeWidthValue());
else
svgSize.setWidth(static_cast<int>(width.value(rootElement)));
if (height.unitType() == LengthTypePercentage)
svgSize.setHeight(rootElement->relativeHeightValue());
else
svgSize.setHeight(static_cast<int>(height.value(rootElement)));
return svgSize;
}
示例2: size
IntSize SVGImage::size() const
{
IntSize defaultSize(300, 150);
// FIXME: Eventually we'll be passed in the dest size and can scale against that
IntSize destSize = defaultSize;
if (!m_frame || !m_frame->document())
return IntSize();
SVGSVGElement* rootElement = static_cast<SVGDocument*>(m_frame->document())->rootElement();
if (!rootElement)
return defaultSize;
SVGLength width = rootElement->width();
SVGLength height = rootElement->height();
IntSize svgSize;
if (width.unitType() == LengthTypePercentage)
svgSize.setWidth(static_cast<int>(width.valueInSpecifiedUnits() * destSize.width()));
else
svgSize.setWidth(static_cast<int>(width.value()));
if (height.unitType() == LengthTypePercentage)
svgSize.setHeight(static_cast<int>(height.valueInSpecifiedUnits() * destSize.height()));
else
svgSize.setHeight(static_cast<int>(height.value()));
return svgSize;
}
示例3: calcViewport
void RenderSVGContainer::calcViewport()
{
SVGElement* svgelem = static_cast<SVGElement*>(element());
if (svgelem->hasTagName(SVGNames::svgTag)) {
SVGSVGElement* svg = static_cast<SVGSVGElement*>(element());
if (!selfNeedsLayout() && !svg->hasRelativeValues())
return;
float x = 0.0f;
float y = 0.0f;
if (parent()->isSVGContainer()) {
x = svg->x().value();
y = svg->y().value();
}
float w = svg->width().value();
float h = svg->height().value();
m_viewport = FloatRect(x, y, w, h);
} else if (svgelem->hasTagName(SVGNames::markerTag)) {
if (!selfNeedsLayout())
return;
SVGMarkerElement* svg = static_cast<SVGMarkerElement*>(element());
float w = svg->markerWidth().value();
float h = svg->markerHeight().value();
m_viewport = FloatRect(0.0f, 0.0f, w, h);
}
}
示例4: hasRelativeHeight
bool SVGImage::hasRelativeHeight() const
{
if (!m_page)
return false;
SVGSVGElement* rootElement = static_cast<SVGDocument*>(m_page->mainFrame()->document())->rootElement();
if (!rootElement)
return false;
return rootElement->height().unitType() == LengthTypePercentage;
}
示例5: calcViewport
void RenderSVGViewportContainer::calcViewport()
{
SVGElement* element = static_cast<SVGElement*>(node());
if (element->hasTagName(SVGNames::svgTag)) {
SVGSVGElement* svg = static_cast<SVGSVGElement*>(element);
m_viewport = FloatRect(svg->x().value(svg)
, svg->y().value(svg)
, svg->width().value(svg)
, svg->height().value(svg));
}
}
示例6: calcViewport
void RenderSVGRoot::calcViewport()
{
SVGSVGElement* svg = static_cast<SVGSVGElement*>(node());
if (!selfNeedsLayout() && !svg->hasRelativeValues())
return;
if (!svg->hasSetContainerSize()) {
// In the normal case of <svg> being stand-alone or in a CSSBoxModel object we use
// RenderBox::width()/height() (which pulls data from RenderStyle)
m_viewportSize = FloatSize(width(), height());
} else {
// In the SVGImage case grab the SVGLength values off of SVGSVGElement and use
// the special relativeWidthValue accessors which respect the specified containerSize
SVGLength width = svg->width();
SVGLength height = svg->height();
float viewportWidth = (width.unitType() == LengthTypePercentage) ? svg->relativeWidthValue() : width.value(svg);
float viewportHeight = (height.unitType() == LengthTypePercentage) ? svg->relativeHeightValue() : height.value(svg);
m_viewportSize = FloatSize(viewportWidth, viewportHeight);
}
}
示例7: calcViewport
void LayoutSVGViewportContainer::calcViewport()
{
SVGElement* element = this->element();
ASSERT(element);
if (!isSVGSVGElement(*element))
return;
SVGSVGElement* svg = toSVGSVGElement(element);
FloatRect oldViewport = m_viewport;
SVGLengthContext lengthContext(element);
m_viewport = FloatRect(svg->x()->currentValue()->value(lengthContext), svg->y()->currentValue()->value(lengthContext), svg->width()->currentValue()->value(lengthContext), svg->height()->currentValue()->value(lengthContext));
if (oldViewport != m_viewport) {
setNeedsBoundariesUpdate();
setNeedsTransformUpdate();
}
}
示例8: calcViewport
void RenderSVGViewportContainer::calcViewport()
{
SVGElement* element = toSVGElement(node());
if (!element->hasTagName(SVGNames::svgTag))
return;
SVGSVGElement* svg = toSVGSVGElement(element);
FloatRect oldViewport = m_viewport;
SVGLengthContext lengthContext(element);
m_viewport = FloatRect(svg->x().value(lengthContext), svg->y().value(lengthContext), svg->width().value(lengthContext), svg->height().value(lengthContext));
SVGElement* correspondingElement = svg->correspondingElement();
if (correspondingElement && svg->isInShadowTree()) {
const HashSet<SVGElementInstance*>& instances = correspondingElement->instancesForElement();
ASSERT(!instances.isEmpty());
SVGUseElement* useElement = 0;
const HashSet<SVGElementInstance*>::const_iterator end = instances.end();
for (HashSet<SVGElementInstance*>::const_iterator it = instances.begin(); it != end; ++it) {
const SVGElementInstance* instance = (*it);
ASSERT(instance->correspondingElement()->hasTagName(SVGNames::svgTag) || instance->correspondingElement()->hasTagName(SVGNames::symbolTag));
if (instance->shadowTreeElement() == svg) {
ASSERT(correspondingElement == instance->correspondingElement());
useElement = instance->directUseElement();
if (!useElement)
useElement = instance->correspondingUseElement();
break;
}
}
ASSERT(useElement);
bool isSymbolElement = correspondingElement->hasTagName(SVGNames::symbolTag);
// Spec (<use> on <symbol>): This generated 'svg' will always have explicit values for attributes width and height.
// If attributes width and/or height are provided on the 'use' element, then these attributes
// will be transferred to the generated 'svg'. If attributes width and/or height are not specified,
// the generated 'svg' element will use values of 100% for these attributes.
// Spec (<use> on <svg>): If attributes width and/or height are provided on the 'use' element, then these
// values will override the corresponding attributes on the 'svg' in the generated tree.
SVGLengthContext lengthContext(element);
if (useElement->hasAttribute(SVGNames::widthAttr))
m_viewport.setWidth(useElement->width().value(lengthContext));
else if (isSymbolElement && svg->hasAttribute(SVGNames::widthAttr)) {
SVGLength containerWidth(LengthModeWidth, "100%");
m_viewport.setWidth(containerWidth.value(lengthContext));
}
if (useElement->hasAttribute(SVGNames::heightAttr))
m_viewport.setHeight(useElement->height().value(lengthContext));
else if (isSymbolElement && svg->hasAttribute(SVGNames::heightAttr)) {
SVGLength containerHeight(LengthModeHeight, "100%");
m_viewport.setHeight(containerHeight.value(lengthContext));
}
}
if (oldViewport != m_viewport) {
setNeedsBoundariesUpdate();
setNeedsTransformUpdate();
}
}