Java Code Examples for javafx.scene.transform.Affine#getMxx()

The following examples show how to use javafx.scene.transform.Affine#getMxx() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: NodeUtils.java    From gef with Eclipse Public License 2.0 5 votes vote down vote up
/**
 * Returns <code>true</code> if the given {@link Affine}s are equal.
 * Otherwise returns <code>false</code>.
 *
 * @param a1
 *            The first operand.
 * @param a2
 *            The second operand.
 * @return <code>true</code> if the given {@link Affine}s are equal,
 *         otherwise <code>false</code>.
 */
public static boolean equals(Affine a1, Affine a2) {
	// TODO: verify if Affine#equals() works with Java 8
	// Affine does not properly implement equals, so we have to implement
	// that here
	return a1.getMxx() == a2.getMxx() && a1.getMxy() == a2.getMxy()
			&& a1.getMxz() == a2.getMxz() && a1.getMyx() == a2.getMyx()
			&& a1.getMyy() == a2.getMyy() && a1.getMyz() == a2.getMyz()
			&& a1.getMzx() == a2.getMzx() && a1.getMzy() == a2.getMzy()
			&& a1.getMzz() == a2.getMzz() && a1.getTx() == a2.getTx()
			&& a1.getTy() == a2.getTy() && a1.getTz() == a2.getTz();
}
 
Example 2
Source File: InfiniteCanvas.java    From gef with Eclipse Public License 2.0 5 votes vote down vote up
/**
 * Sets the transformation matrix of the {@link #getContentTransform()
 * viewport transform} to the values specified by the given {@link Affine}.
 *
 * @param tx
 *            The {@link Affine} determining the new
 *            {@link #getContentTransform() viewport transform}.
 */
public void setContentTransform(Affine tx) {
	Affine viewportTransform = contentTransformProperty.get();
	// Unregister bounds listeners so that transformation changes do not
	// cause updates. Use flag to be aware if the transformation changed.
	unregisterUpdateScrollBarsOnBoundsChanges();
	boolean valuesChanged = false;
	if (viewportTransform.getMxx() != tx.getMxx()) {
		viewportTransform.setMxx(tx.getMxx());
		valuesChanged = true;
	}
	if (viewportTransform.getMxy() != tx.getMxy()) {
		viewportTransform.setMxy(tx.getMxy());
		valuesChanged = true;
	}
	if (viewportTransform.getMyx() != tx.getMyx()) {
		viewportTransform.setMyx(tx.getMyx());
		valuesChanged = true;
	}
	if (viewportTransform.getMyy() != tx.getMyy()) {
		viewportTransform.setMyy(tx.getMyy());
		valuesChanged = true;
	}
	if (viewportTransform.getTx() != tx.getTx()) {
		viewportTransform.setTx(tx.getTx());
		valuesChanged = true;
	}
	if (viewportTransform.getTy() != tx.getTy()) {
		viewportTransform.setTy(tx.getTy());
		valuesChanged = true;
	}
	// Update scrollbars if the transformation changed.
	if (valuesChanged) {
		updateScrollBars();
	}
	// Register previously unregistered listeners.
	registerUpdateScrollBarsOnBoundsChanges();
}
 
Example 3
Source File: CreationMenuOnClickHandler.java    From gef with Eclipse Public License 2.0 4 votes vote down vote up
/**
 * Callback method called when an item is clicked.
 */
protected void onItemClick() {
	// compute width and height deltas to the content layer
	Node itemVisual = templateGroup.getChildren().get(0);
	Bounds bounds = itemVisual.getLayoutBounds();
	Bounds boundsInContent = getHost().getRoot().getVisual().sceneToLocal(itemVisual.localToScene(bounds));
	double dx = bounds.getWidth() - boundsInContent.getWidth();
	double dy = bounds.getHeight() - boundsInContent.getHeight();

	// compute translation based on the bounds, scaling, and width/height
	// deltas
	Affine contentsTransform = getViewer().getCanvas().contentTransformProperty().get();
	double x = boundsInContent.getMinX() - bounds.getMinX() / contentsTransform.getMxx() - dx / 2;
	double y = boundsInContent.getMinY() - bounds.getMinY() / contentsTransform.getMyy() - dy / 2;

	// close the creation menu
	closeMenu();

	// create the new semantic element
	ICreationMenuItem item = items.get(currentItemIndex);
	Object toCreate = item.createContent();

	// build create operation
	IRootPart<? extends Node> root = getHost().getRoot();
	CreationPolicy creationPolicy = root.getAdapter(CreationPolicy.class);
	creationPolicy.init();
	IContentPart<? extends Node> contentPart = creationPolicy.create(toCreate, root,
			root.getContentPartChildren().size(), HashMultimap.<IContentPart<? extends Node>, String> create(),
			false, false);

	// relocate to final position
	TransformPolicy txPolicy = contentPart.getAdapter(TransformPolicy.class);
	txPolicy.init();
	txPolicy.setTransform(new AffineTransform(1, 0, 0, 1, x, y));

	// assemble operations
	ReverseUndoCompositeOperation rev = new ReverseUndoCompositeOperation("CreateOnClick");
	rev.add(creationPolicy.commit());
	rev.add(txPolicy.commit());

	try {
		getViewer().getDomain().execute(rev, new NullProgressMonitor());
	} catch (ExecutionException e) {
		throw new RuntimeException(e);
	}
}