// Return true if bounds of point extend beyond point public boolean getLineEndBounds(MiPart obj, MiBounds b, boolean start) { if (!(obj instanceof MiMultiPointShape)) return (false); MiAttributes attributes = obj.getAttributes(); boolean changed = false; boolean styleExtendsBeyondEndOfLine = false; MiDistance size = 0; if (start) { int style = attributes.getLineStartStyle(); if (style != Mi_NONE) { size = attributes.getLineStartSize(); if (attributes.getLineEndsSizeFnOfLineWidth()) size += attributes.getLineWidth(); styleExtendsBeyondEndOfLine |= stylesExtendsBeyondEndOfLine[style]; changed = true; obj.getPoint(0, tmpPoint); b.setBounds(tmpPoint); } } else { int style = attributes.getLineEndStyle(); if (style != Mi_NONE) { size = attributes.getLineEndSize(); if (attributes.getLineEndsSizeFnOfLineWidth()) size += attributes.getLineWidth(); styleExtendsBeyondEndOfLine |= stylesExtendsBeyondEndOfLine[style]; changed = true; obj.getPoint(-1, tmpPoint); b.setBounds(tmpPoint); } } if (changed) { MiMultiPointShape shape = (MiMultiPointShape) obj; if (styleExtendsBeyondEndOfLine) { b.addMargins(size); } else if (shape.isVertical()) { b.setXmin(b.getXmin() - size); b.setXmax(b.getXmax() + size); } else if (shape.isHorizontal()) { b.setYmin(b.getYmin() - size); b.setYmax(b.getYmax() + size); } else { b.addMargins(size); } } return (changed); }
/** * ------------------------------------------------------ Constructs a new MiVisibleContainer. * ------------------------------------------------------ */ public MiVisibleContainer() { setInsetMargins(4); MiBounds tmpBounds = MiBounds.newBounds(); tmpBounds.zeroOut(); tmpBounds.addMargins(getInsetMargins(tmpMargins)); replaceBounds(tmpBounds); setTarget(this); setBorderLook(Mi_NONE); MiBounds.freeBounds(tmpBounds); }
/** * ------------------------------------------------------ Realculates the outer bounds of this * container. * * @param bounds the (returned) outer bounds * ------------------------------------------------------ */ protected void reCalcBounds(MiBounds bounds) { getBounds(bounds); if (!autoLayoutEnabled) { return; } MiBounds contents = MiBounds.newBounds(); MiMargins insetMargins = getInsetMargins(); MiMargins cellMargins = getCellMargins(); super.reCalcBounds(contents); if (contents.isReversed()) { contents.copy(bounds); if (contents.isReversed()) { contents.setBounds(0, 0, 0, 0); contents.addMargins(insetMargins); contents.addMargins(cellMargins); contents.addMargins(getMargins(tmpMargins)); } else if ((contents.getWidth() < insetMargins.getWidth() + getMargins(tmpMargins).getWidth() + cellMargins.getWidth()) || (contents.getHeight() < insetMargins.getHeight() + getMargins(tmpMargins).getHeight() + cellMargins.getHeight())) { contents.setWidth( insetMargins.getWidth() + getMargins(tmpMargins).getWidth() + cellMargins.getWidth()); contents.setHeight( insetMargins.getHeight() + getMargins(tmpMargins).getHeight() + cellMargins.getHeight()); } bounds.copy(contents); } else { // SUPER CLASS DOES THIS contents.addMargins(insetMargins); contents.addMargins(cellMargins); // SUPER CLASS DOES THIS contents.addMargins(getMargins(tmpMargins)); } if ((autoLayoutRule == MAKE_CONTAINER_SAME_SIZE_AS_CONTENTS)) { bounds.copy(contents); } else if ((autoLayoutRule == MAKE_CONTAINER_SAME_SIZE_OR_BIGGER_THAN_CONTENTS)) { if (!contents.isContainedIn(bounds)) bounds.copy(contents); } else if ((autoLayoutRule == MAKE_CONTAINER_SAME_SIZE_AS_CONTENTS_OR_OVERRIDDEN_PREFERRED_SIZE)) { bounds.copy(contents); if (hasOverriddenPreferredSize()) { bounds.setSize(getPreferredSize(new MiSize())); } } if (hasFixedWidthOrHeight) { getBounds(contents); if (hasFixedWidth()) { bounds.xmin = contents.xmin; bounds.xmax = contents.xmax; } if (hasFixedHeight()) { bounds.ymin = contents.ymin; bounds.ymax = contents.ymax; } } MiBounds.freeBounds(contents); }