public boolean isImgHorizontallyOriented() { SVGSVGElement svg = getSVGRootElement(); SVGRect rect = svg.getRectTrait(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE); if (rect != null) { return (rect.getWidth() > rect.getHeight()); } else { return false; } }
private Map<String, String[]> rotateElements() { SceneManager m_sceneMgr = getSceneManager(); int angle = rotateRight ? 90 : -90; SVGSVGElement svgRoot = m_sceneMgr.getPerseusController().getSVGRootElement(); SVGRect viewBoxRect = svgRoot.getRectTrait(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE); float translateH = viewBoxRect != null ? viewBoxRect.getHeight() : 0f; float translateW = viewBoxRect != null ? viewBoxRect.getWidth() : 0f; float[] translate = rotateRight ? new float[]{ translateH, 0f} : new float[]{ 0f, translateW}; SVGElement elem = (SVGElement) svgRoot.getFirstElementChild(); Rectangle bBox = new Rectangle(); Map<String, String[]> textChanges = new HashMap<String, String[]>(); while (elem != null) { // process rotateElement(elem, angle, translate, textChanges, bBox); // get next elem = (SVGElement) elem.getNextElementSibling(); } //getModel().setAttributes(textChanges); m_sceneMgr.getScreenManager().repaint(bBox, SVGObjectOutline.SELECTOR_OVERLAP); m_sceneMgr.getScreenManager().refresh(); return textChanges; }
private Map<DocumentElement, String[]> changeViewBox(boolean isLandscape) { SVGSVGElement svg = getSceneManager().getPerseusController().getSVGRootElement(); SVGRect rect = svg.getRectTrait(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE); if (getScreenManager().isLandscapeMode() != isLandscape){ // exchange width and height float w = rect.getWidth(); float h = rect.getHeight(); rect.setHeight(w); rect.setWidth(h); DocumentElement svgRoot = getModel().getSVGRoot(getModel().getModel()); String[] attributes = new String[]{ SVGConstants.SVG_VIEW_BOX_ATTRIBUTE, rect.getX() + " " + rect.getY() + " " + rect.getWidth() + " " + rect.getHeight(),//NOI18N SVGConstants.SVG_WIDTH_ATTRIBUTE, String.valueOf(rect.getWidth()), SVGConstants.SVG_HEIGHT_ATTRIBUTE, String.valueOf(rect.getHeight()) }; Map<DocumentElement, String[]> textChanges = new HashMap<DocumentElement, String[]>(); textChanges.put(svgRoot, attributes); return textChanges; } return null; }
SVGRect viewBoxRect = svg.getRectTrait(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE); SVGPoint translatePoint = svg.getCurrentTranslate(); SVGRect rect = null;
void initialize() { m_svgImage = m_sceneMgr.getSVGImage(); m_svgDoc = (DocumentNode) m_svgImage.getDocument(); m_animator = (SVGAnimatorImpl) SVGAnimator.createAnimator( m_svgImage, "javax.swing.JComponent"); //NOI18N m_animationState = containsAnimation(m_svgDoc) ? ANIMATION_NOT_RUNNING : ANIMATION_NOT_AVAILABLE; SVGSVGElement svg = getSVGRootElement(); SVGRect rect = svg.getRectTrait(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE); if (rect != null) { m_viewBoxMarker = (SVGLocatableElement) m_svgDoc.createElementNS(SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_RECT_TAG); m_viewBoxMarker.setId(ID_VIEWBOX_MARKER); m_viewBoxMarker.setTrait(SVGConstants.SVG_FILL_ATTRIBUTE, "none"); //NOI18N m_viewBoxMarker.setTrait(SVGConstants.SVG_STROKE_ATTRIBUTE, "none"); //NOI18N m_viewBoxMarker.setFloatTrait(SVGConstants.SVG_X_ATTRIBUTE, rect.getX()); m_viewBoxMarker.setFloatTrait(SVGConstants.SVG_Y_ATTRIBUTE, rect.getY()); m_viewBoxMarker.setFloatTrait(SVGConstants.SVG_WIDTH_ATTRIBUTE, rect.getWidth()); m_viewBoxMarker.setFloatTrait(SVGConstants.SVG_HEIGHT_ATTRIBUTE, rect.getHeight()); svg.appendChild(m_viewBoxMarker); } else { m_viewBoxMarker = null; } // we need to get the animator into the 'paused' state so that // all changes are immediately visible m_animator.play(); m_animator.pause(); SceneManager.log(Level.INFO, toString() + " initialized."); //NOI18N }