Class CombinedChildBox

java.lang.Object
pi.graphics.boxes.Box
pi.graphics.boxes.CombinedChildBox
All Implemented Interfaces:
Iterable<Box>
Direct Known Subclasses:
FramedBox, TextBlockAlignBox

public abstract class CombinedChildBox extends Box
Eine Box, die aus mehreren primitiven Kind-Boxen kombiniert ist.
 
 public class FramedBox extends CombinedChildBox
 {
     // parent -> child
     public final DimensionBox dimension;

     public final AlignBox align;

     public final Box content;

     public FramedBox(Box child)
     {
         // child -> parent
         content = child;
         align = new AlignBox(child);
         dimension = align;
         addChild(dimension);
     }
 }
 
 

Es handelt sich also um eine virtuelle, transparente Box, die keine Zeichnenroutinen ausführt.

Since:
0.40.0
Author:
Josef Friedrich
  • Field Details

    • child

      protected Box child
      Die Kind-Box, dieser übergeordneten Box.
  • Constructor Details

    • CombinedChildBox

      public CombinedChildBox()
  • Method Details

    • calculateDimension

      protected void calculateDimension()
      Description copied from class: Box
      Berechnet rekursiv die Abmessung (die Höhe und Breite) der eigenen Box.

      Single-Child-Code-Beispiel

       
       protected void calculateDimension()
       {
           width = child.width + 2 * margin;
           height = child.height + 2 * margin;
       }
       
       

      Multiple-Child-Code-Beispiel

       
       protected void calculateDimension()
       {
           int maxWidth = 0;
           for (Box child : childs)
           {
               if (child.width > maxWidth)
               {
                   maxWidth = child.width;
               }
               height += child.height;
           }
           width = maxWidth;
       }
       
       
      Specified by:
      calculateDimension in class Box
    • calculateAnchors

      protected void calculateAnchors()
      Description copied from class: Box
      Berechnet rekursiv alle Ankerpunkte (linkes oberes Eck) der untergeordneten Kinder-Boxen. Die inneren Blattboxen brauchen diese Methode nicht zu implementieren.

      Single-Child-Code-Beispiel

       
       protected void calculateAnchors()
       {
           child.x = x + margin;
           child.y = y + margin;
       }
       
       

      Multiple-Child-Code-Beispiel

       
       protected void calculateAnchors()
       {
           int yCursor = y;
           for (Box child : childs)
           {
               child.x = x;
               child.y = yCursor;
               yCursor += child.height;
           }
       }
       
       
      Specified by:
      calculateAnchors in class Box
    • addChild

      public void addChild(Box child)
      Fügt eine Kind-Box hinzu.

      Die Zellbox wird dabei als Elternbox der Kind-Box gesetzt.

      Parameters:
      child - Die Kind-Box.
    • numberOfChilds

      public int numberOfChilds()
      Description copied from class: Box
      Gibt die Anzahl an Kinder-Boxen zurück.
      Specified by:
      numberOfChilds in class Box
      Returns:
      Die Anzahl an Kinder-Boxen.