Examples of HomePieceOfFurniture


Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  private HomePieceOfFurniture getRotatedPieceOfFurnitureAt(float x, float y) {
    List<Selectable> selectedItems = this.home.getSelectedItems();
    if (selectedItems.size() == 1
        && selectedItems.get(0) instanceof HomePieceOfFurniture
        && isItemMovable(selectedItems.get(0))) {
      HomePieceOfFurniture piece = (HomePieceOfFurniture)selectedItems.get(0);
      float scaleInverse = 1 / getScale();
      float margin = PIXEL_MARGIN * scaleInverse;
      if (piece.isTopLeftPointAt(x, y, margin)
          // Keep a free zone around piece center
          && Math.abs(x - piece.getX()) > scaleInverse
          && Math.abs(y - piece.getY()) > scaleInverse) {
        return piece;
      }
    }
    return null;
  }
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  private HomePieceOfFurniture getElevatedPieceOfFurnitureAt(float x, float y) {
    List<Selectable> selectedItems = this.home.getSelectedItems();
    if (selectedItems.size() == 1
        && selectedItems.get(0) instanceof HomePieceOfFurniture
        && isItemMovable(selectedItems.get(0))) {
      HomePieceOfFurniture piece = (HomePieceOfFurniture)selectedItems.get(0);
      float scaleInverse = 1 / getScale();
      float margin = PIXEL_MARGIN * scaleInverse;
      if (piece.isTopRightPointAt(x, y, margin)
          // Keep a free zone around piece center
          && Math.abs(x - piece.getX()) > scaleInverse
          && Math.abs(y - piece.getY()) > scaleInverse) {
        return piece;
      }
    }
    return null;
  }
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

   */
  private HomePieceOfFurniture getHeightResizedPieceOfFurnitureAt(float x, float y) {
    List<Selectable> selectedItems = this.home.getSelectedItems();
    if (selectedItems.size() == 1
        && selectedItems.get(0) instanceof HomePieceOfFurniture) {
      HomePieceOfFurniture piece = (HomePieceOfFurniture)selectedItems.get(0);
      float scaleInverse = 1 / getScale();
      float margin = PIXEL_MARGIN * scaleInverse;
      if (piece.isResizable()
          && isItemResizable(piece)
          && piece.isBottomLeftPointAt(x, y, margin)
          // Keep a free zone around piece center
          && Math.abs(x - piece.getX()) > scaleInverse
          && Math.abs(y - piece.getY()) > scaleInverse) {
        return piece;
      }
    }
    return null;
  }
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  private HomePieceOfFurniture getWidthAndDepthResizedPieceOfFurnitureAt(float x, float y) {
    List<Selectable> selectedItems = this.home.getSelectedItems();
    if (selectedItems.size() == 1
        && selectedItems.get(0) instanceof HomePieceOfFurniture
        && isItemResizable(selectedItems.get(0))) {
      HomePieceOfFurniture piece = (HomePieceOfFurniture)selectedItems.get(0);
      float scaleInverse = 1 / getScale();
      float margin = PIXEL_MARGIN * scaleInverse;
      if (piece.isResizable()
          && isItemResizable(piece)
          && piece.isBottomRightPointAt(x, y, margin)
          // Keep a free zone around piece center
          && Math.abs(x - piece.getX()) > scaleInverse
          && Math.abs(y - piece.getY()) > scaleInverse) {
        return piece;
      }
    }
    return null;
  }
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  private HomePieceOfFurniture getPieceOfFurnitureNameAt(float x, float y) {
    List<Selectable> selectedItems = this.home.getSelectedItems();
    if (selectedItems.size() == 1
        && selectedItems.get(0) instanceof HomePieceOfFurniture
        && isItemMovable(selectedItems.get(0))) {
      HomePieceOfFurniture piece = (HomePieceOfFurniture)selectedItems.get(0);
      float scaleInverse = 1 / getScale();
      float margin = PIXEL_MARGIN * scaleInverse;
      if (piece.isNameVisible()
          && piece.getName().trim().length() > 0
          && piece.isNameCenterPointAt(x, y, margin)) {
        return piece;
      }
    }
    return null;
  }
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  /**
   * Post to undo support a width and depth change on <code>piece</code>.
   */
  private void postPieceOfFurnitureWidthAndDepthResize(final ResizedPieceOfFurniture resizedPiece) {
    HomePieceOfFurniture piece = resizedPiece.getPieceOfFurniture();
    if (piece.getWidth() != resizedPiece.getWidth()
        || piece.getDepth() != resizedPiece.getDepth()) {
      postPieceOfFurnitureResize(resizedPiece, "undoPieceOfFurnitureWidthAndDepthResizeName");
    }
  }
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  /**
   * Post to undo support a size change on <code>piece</code>.
   */
  private void postPieceOfFurnitureResize(final ResizedPieceOfFurniture resizedPiece,
                                          final String presentationNameKey) {
    HomePieceOfFurniture piece = resizedPiece.getPieceOfFurniture();
    final float newX = piece.getX();
    final float newY = piece.getY();
    final float newWidth = piece.getWidth();
    final float newDepth = piece.getDepth();
    final float newHeight = piece.getHeight();
    final boolean doorOrWindowBoundToWall = piece instanceof HomeDoorOrWindow
    && ((HomeDoorOrWindow)piece).isBoundToWall();
    UndoableEdit undoableEdit = new AbstractUndoableEdit() {     
      @Override
      public void undo() throws CannotUndoException {
        super.undo();
        resizedPiece.reset();
        selectAndShowItems(Arrays.asList(new HomePieceOfFurniture [] {resizedPiece.getPieceOfFurniture()}));
      }
     
      @Override
      public void redo() throws CannotRedoException {
        super.redo();
        HomePieceOfFurniture piece = resizedPiece.getPieceOfFurniture();
        piece.setX(newX);
        piece.setY(newY);
        piece.setWidth(newWidth);
        piece.setDepth(newDepth);
        piece.setHeight(newHeight);
        if (piece instanceof HomeDoorOrWindow) {
          ((HomeDoorOrWindow)piece).setBoundToWall(doorOrWindowBoundToWall);
        }
        selectAndShowItems(Arrays.asList(new HomePieceOfFurniture [] {piece}));
      }     
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

                          return 0;
                        }
                      }
                    });
              }
              HomePieceOfFurniture lowestDoorOrWindow = doorsOrWindows.get(0);           
              // Generate geometry for wall part below window
              if (lowestDoorOrWindow.getElevation() > 0) {
                wallGeometries.add(createWallVerticalPartGeometry(wall, wallPartPoints, 0,
                    cosWallYawAngle, sinWallYawAngle, 0, lowestDoorOrWindow.getElevation(), texture,
                    textureReferencePoint, wallSide));
                wallGeometries.add(createWallHorizontalPartGeometry(wallPartPoints, 0, true, roundWall));
                wallGeometries.add(createWallHorizontalPartGeometry(wallPartPoints,
                    lowestDoorOrWindow.getElevation(), false, roundWall));
              }
             
              // Generate geometry for wall parts between superimposed windows
              for (int i = 0; i < doorsOrWindows.size() - 1; ) {
                HomePieceOfFurniture lowerDoorOrWindow = doorsOrWindows.get(i);           
                HomePieceOfFurniture higherDoorOrWindow = doorsOrWindows.get(++i);
                // Ignore higher windows smaller than lower window
                while (lowerDoorOrWindow.getElevation() + lowerDoorOrWindow.getHeight() >= higherDoorOrWindow.getElevation() + higherDoorOrWindow.getHeight()
                    && ++i < doorsOrWindows.size()) {
                  higherDoorOrWindow = doorsOrWindows.get(i);
                }
                if (i < doorsOrWindows.size()
                    && lowerDoorOrWindow.getElevation() + lowerDoorOrWindow.getHeight() < higherDoorOrWindow.getElevation()) {
                  wallGeometries.add(createWallVerticalPartGeometry(wall, wallPartPoints, lowerDoorOrWindow.getElevation() + lowerDoorOrWindow.getHeight(),
                      cosWallYawAngle, sinWallYawAngle, 0, higherDoorOrWindow.getElevation(), texture, textureReferencePoint, wallSide));
                  wallGeometries.add(createWallHorizontalPartGeometry(wallPartPoints,
                      lowerDoorOrWindow.getElevation() + lowerDoorOrWindow.getHeight(), true, roundWall));
                  wallGeometries.add(createWallHorizontalPartGeometry(wallPartPoints, higherDoorOrWindow.getElevation(), false, roundWall));
                }
              }
               
              HomePieceOfFurniture highestDoorOrWindow = doorsOrWindows.get(doorsOrWindows.size() - 1);           
              for (int i = doorsOrWindows.size() - 2; i >= 0; i--) {
                HomePieceOfFurniture doorOrWindow = doorsOrWindows.get(i);           
                if (doorOrWindow.getElevation() + doorOrWindow.getHeight() > highestDoorOrWindow.getElevation() + highestDoorOrWindow.getHeight()) {
                  highestDoorOrWindow = doorOrWindow;
                }
              }
              float doorOrWindowTop = highestDoorOrWindow.getElevation() + highestDoorOrWindow.getHeight();
              // Compute the minimum vertical position of wallPartPoints
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

            || HomePieceOfFurniture.Property.COLOR.name().equals(ev.getPropertyName())
            || HomePieceOfFurniture.Property.TEXTURE.name().equals(ev.getPropertyName())
            || HomePieceOfFurniture.Property.SHININESS.name().equals(ev.getPropertyName())
            || HomePieceOfFurniture.Property.MODEL_MIRRORED.name().equals(ev.getPropertyName())
            || HomePieceOfFurniture.Property.VISIBLE.name().equals(ev.getPropertyName())) {
              HomePieceOfFurniture piece = (HomePieceOfFurniture)ev.getSource();
              updateObjects(Arrays.asList(new HomePieceOfFurniture [] {piece}));
              // If piece is or contains a door or a window, update walls that intersect with piece
              if (containsDoorsAndWindows(piece)) {
                updateObjects(home.getWalls());
              }
          }
        }
      };
    for (HomePieceOfFurniture piece : this.home.getFurniture()) {
      piece.addPropertyChangeListener(this.furnitureChangeListener);
    }     
    this.furnitureListener = new CollectionListener<HomePieceOfFurniture>() {
        public void collectionChanged(CollectionEvent<HomePieceOfFurniture> ev) {
          HomePieceOfFurniture piece = (HomePieceOfFurniture)ev.getItem();
          switch (ev.getType()) {
            case ADD :
              addObject(group, piece, true, false);
              piece.addPropertyChangeListener(furnitureChangeListener);
              break;
            case DELETE :
              deleteObject(piece);
              piece.removePropertyChangeListener(furnitureChangeListener);
              break;
          }
          // If piece is or contains a door or a window, update walls that intersect with piece
          if (containsDoorsAndWindows(piece)) {
            updateObjects(home.getWalls());
View Full Code Here

Examples of com.eteks.sweethome3d.model.HomePieceOfFurniture

  private void addShadowOnFloor(Group homeRoot, Map<HomePieceOfFurniture, Node> pieces3D) {
    Area areaOnFloor = new Area();
    // Compute union of the areas of pieces at ground level that are not lights, doors or windows
    for (Map.Entry<HomePieceOfFurniture, Node> object3DEntry : pieces3D.entrySet()) {
      if (object3DEntry.getKey() instanceof HomePieceOfFurniture) {
        HomePieceOfFurniture piece = object3DEntry.getKey();
        // This operation can be lengthy, so give up if thread is interrupted
        if (Thread.currentThread().isInterrupted()) {
          return;
        }
        if (piece.getElevation() == 0
            && !piece.isDoorOrWindow()
            && !(piece instanceof com.eteks.sweethome3d.model.Light)) {
          Area pieceAreaOnFloor = ModelManager.getInstance().getAreaOnFloor(object3DEntry.getValue());
          areaOnFloor.add(pieceAreaOnFloor);
        }
      }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.