Man Linux: Main Page and Category List

NAME

       RectanglePacking -

SYNOPSIS

       #include <RectanglePacking.h>

   Public Member Functions
       RectanglePacking (int numberRects)
       ~RectanglePacking ()
       void defaultPositionRestOfRectangles (vector< Rectangle< float >
           >::iterator itlim, vector< Rectangle< float > >::iterator itend)
       void optimalPositionOfNewRectangle (vector< Rectangle< float >
           >::iterator itNewRect)
       list< RectangleRelativePosition >::iterator
           testOfPositionOfNewRectangle (int positionInFirstSequence, int
           positionInSecondSequence)
       list< RectangleRelativePosition >::iterator positionOfNewRectangle (int
           positionInFirstSequence, int positionInSecondSequence)
       void coordinatesOfNewRectangle (list< RectangleRelativePosition
           >::iterator itRectLeftOrBelowOfNewRect, int
           positionInFirstSequence, int positionInSecondSequence)
       void dimensionsBoundingBoxOfRectanglesLeftOrBelowNewRectangle (list<
           RectangleRelativePosition >::iterator itRectLeftOrBelowOfNewRect)
       void dimensionsBoundingBoxOfNewRectangleAndRectanglesLeftOrBelow ()
       void repositionOfRectanglesRightOrAboveNewRectangle (list<
           RectangleRelativePosition >::iterator
           itFirstRectangleRightOrAboveOfNewRectangle, int
           positionInFirstSequence, int positionInSecondSequence)
       void
           modificationCoordinatesRectanglesRightOrAboveNewRectangleInFonctionNewRectangle
           (list< RectangleRelativePosition >::iterator
           itRectOfSequenceToReposition, int positionInSecondSequence)
       void
           modificationCoordinatesRectanglesRightOrAboveNewRectangleInFonctionAlreadyRepositionnedRectangles
           (list< RectangleRelativePosition >::iterator
           itFirstRectangleRightOrAboveOfNewRectangle, list<
           RectangleRelativePosition >::iterator itRectOfSequenceToReposition)
       void dimensionsBoundingBoxOfAllOptimalPositionnedRectangles (list<
           RectangleRelativePosition >::iterator itRectOfSequenceToReposition)
       void modificationOfSequencePair (vector< Rectangle< float > >::iterator
           itNewRect, list< RectangleRelativePosition >::iterator
           itBestPositionInFirstSequence)
       int calculOfNumberOptimalRepositionnedRectangles (const char *quality)
       float calculateRatio ()
       void lineOrColumnToStart (bool &boolWidth, bool &boolHeight)
       void endOfLine (float &heightTemp, float &widthTemp, bool &boolWidth,
           bool &boolHeight)
       void endOfColumn (float &widthTemp, float &heightTemp, bool &boolWidth,
           bool &boolHeight)
       void continueLine (vector< Rectangle< float > >::iterator itr, float
           &widthTemp, float &heightTemp, bool &boolWidth, bool &boolHeight)
       void continueColumn (vector< Rectangle< float > >::iterator itr, float
           &widthTemp, float &heightTemp, bool &boolWidth, bool &boolHeight)
       void optimalPositionOfNewRectangleLimPos (vector< Rectangle< float >
           >::iterator itNewRect, int numberTestedPositions)
       int calculNumberOfTestedPositions (const char *quality)

   Public Attributes
       RectangleRelativePositionList * firstSequence
       int * placesOfRectanglesInSecondSequence
       int numberOfPositionnedRectangles
       int numberOfRectangles
       int bestPlaceInFirstSequence
       int bestPlaceInSecondSequence
       float newRectangleWidth
       float newRectangleHeight
       float newRectangleLeftAbscissa
       float newRectangleLowOrdinate
       float bestRectangleLeftAbscissa
       float bestRectangleLowOrdinate
       float maxWidthOfBoundingBox
       float maxHeightOfBoundingBox
       float bestWidthOfBoundingBox
       float bestHeightOfBoundingBox

Detailed Description

       Authors: David Auber, Patrick Mary, Morgan Mathiaut from the LaBRI
       Visualization Team Email : auber@tulip-software.org Last modification :
       13/03/2009 This program is free software; you can redistribute it
       and/or modify it under the terms of the GNU General Public License as
       published by the Free Software Foundation; either version 2 of the
       License, or (at your option) any later version. This class is used for
       the implementation of the greedy algorithm.

Constructor & Destructor Documentation

   RectanglePacking::RectanglePacking (int numberRects) constructor of the
       RectanglePacking class.
       Parameters:
           numberRects number of rectangles to pack.

   RectanglePacking::~RectanglePacking () destroyer of the RectanglePacking
       class.

Member Function Documentation

   float RectanglePacking::calculateRatio () Calculate the ratio width/height
       or height/width so that the return >=1.
   int RectanglePacking::calculNumberOfTestedPositions (const char * quality)
       Calculate the number of rectangles we can pack without go beyond the
       complexity desired.
   int RectanglePacking::calculOfNumberOptimalRepositionnedRectangles (const
       char * quality) Calculate the number of rectangles we can pack in an
       optimal way without going beyond the complexity desired.
       Parameters:
           quality give the complexity desired.

       Returns:
           an integer equal to the number of rectangles we want to pack in an
           optimal way.

   void RectanglePacking::continueColumn (vector< Rectangle< float >
       >::iterator itr, float & widthTemp, float & heightTemp, bool &
       boolWidth, bool & boolHeight) We start or continue a new column if the
       height of the new rectangle to pack, added to the height of the current
       column, is strictly lower to the height of the including rectangle.
   void RectanglePacking::continueLine (vector< Rectangle< float > >::iterator
       itr, float & widthTemp, float & heightTemp, bool & boolWidth, bool &
       boolHeight) We start or continue a new line if the width of the new
       rectangle to pack, added to the width of the current line, is strictly
       lower to the width of the including rectangle.
   void RectanglePacking::coordinatesOfNewRectangle (list<
       RectangleRelativePosition >::iterator itRectLeftOrBelowOfNewRect, int
       positionInFirstSequence, int positionInSecondSequence) Determine if the
       rectangle pointed by itRectLeftOrBelowOfNewRect has a right abscissa or
       a high ordonate higher than those of rectangles yet visited.
       Parameters:
           itRectLeftOrBelowOfNewRect pointer on one of the structures of
           RectangleRelativePosition corresponding to a rectangle places on
           the left or below the tested position of the new rectangle.
           positionInFirstSequence position tested in the first sequence.
           positionInSecondSequence position tested in the second sequence.

   void RectanglePacking::defaultPositionRestOfRectangles (vector< Rectangle<
       float > >::iterator itlim, vector< Rectangle< float > >::iterator
       itend) Place the rectangles not packed in an optimal way around the
       rectangle including the rectangles packed in an optimal way.
   void
       RectanglePacking::dimensionsBoundingBoxOfAllOptimalPositionnedRectangles
       (list< RectangleRelativePosition >::iterator
       itRectOfSequenceToReposition) Search the dimensions of the rectangle
       including the rectangles on the left and below the considered
       rectangle.
   void
       RectanglePacking::dimensionsBoundingBoxOfNewRectangleAndRectanglesLeftOrBelow
       () Search the dimensions of the rectangle including the new rectangle
       and the rectangles on the left and below it.
   void
       RectanglePacking::dimensionsBoundingBoxOfRectanglesLeftOrBelowNewRectangle
       (list< RectangleRelativePosition >::iterator
       itRectLeftOrBelowOfNewRect) Stock in the fields maxWidthOfBoundingBox
       and maxHeightOfBoundingBox the dimensions of the rectangle including
       the rectangles on the left and below the considered rectangle.
   void RectanglePacking::endOfColumn (float & widthTemp, float & heightTemp,
       bool & boolWidth, bool & boolHeight) End a column and decide if the
       rectangle pointed is going to start a line or a column.
   void RectanglePacking::endOfLine (float & heightTemp, float & widthTemp,
       bool & boolWidth, bool & boolHeight) End a line and decide if the
       rectangle pointed is going to start a line or a column.
   void RectanglePacking::lineOrColumnToStart (bool & boolWidth, bool &
       boolHeight) decide if a new rectangle is going to be placed in line or
       in column.
   void
       RectanglePacking::modificationCoordinatesRectanglesRightOrAboveNewRectangleInFonctionAlreadyRepositionnedRectangles
       (list< RectangleRelativePosition >::iterator
       itFirstRectangleRightOrAboveOfNewRectangle, list<
       RectangleRelativePosition >::iterator itRectOfSequenceToReposition)
       Compare the left abscissa and the low ordonate of the rectangle pointed
       by itRectOfSequenceToReposition with the right abscissa and the high
       ordonate of all the rectangles placed in the first sequence between the
       first rectangle on the right of the tested position and the rectangle
       pointed by itRectOfSequenceToReposition.
       Parameters:
           itFirstRectangleRightOrAboveOfNewRectangle pointer on the first
           rectangle on the right or above the new rectangle.
           itRectOfSequenceToReposition pointer on the rectangles places on
           the right or above the new rectangle.

   void
       RectanglePacking::modificationCoordinatesRectanglesRightOrAboveNewRectangleInFonctionNewRectangle
       (list< RectangleRelativePosition >::iterator
       itRectOfSequenceToReposition, int positionInSecondSequence) Compare the
       right abscissa and the high ordonate of the new rectangle, with the
       left abscissa and the low ordonate of the rectangle pointed by
       itRectOfSequenceToReposition.
       Parameters:
           itRectOfSequenceToReposition pointer on one rectangle placed on the
           right or above the new rectangle.
           positionInSecondSequence position tested in the second sequence.

   void RectanglePacking::modificationOfSequencePair (vector< Rectangle< float
       > >::iterator itNewRect, list< RectangleRelativePosition >::iterator
       itBestPositionInFirstSequence) Modify the even sequence when all the
       position tests, for a new rectangle to pack, have been made.
   void RectanglePacking::optimalPositionOfNewRectangle (vector< Rectangle<
       float > >::iterator itNewRect) Search the best co-ordinates of a
       rectangle in order to pack it in the best way. Test the results
       obtained with all the possible positions in the even sequence.
   void RectanglePacking::optimalPositionOfNewRectangleLimPos (vector<
       Rectangle< float > >::iterator itNewRect, int numberTestedPositions)
   list< RectangleRelativePosition >::iterator
       RectanglePacking::positionOfNewRectangle (int positionInFirstSequence,
       int positionInSecondSequence) Search the co-ordinates of a rectangle
       for the positions tested in the first and in the second sequence of the
       even sequence. Search the dimensions of the rectangle including the
       rectangles placed on the left and below the new rectangle.
       Parameters:
           positionInFirstSequence position tested in the first sequence.
           positionInSecondSequence position tested in the second sequence.

   void RectanglePacking::repositionOfRectanglesRightOrAboveNewRectangle
       (list< RectangleRelativePosition >::iterator
       itFirstRectangleRightOrAboveOfNewRectangle, int
       positionInFirstSequence, int positionInSecondSequence) Calculate again
       the co-ordinates of the rectangles places on the right and above the
       new rectangle. Calculate the dimensions of the rectangle including all
       the packed rectangles.
       Parameters:
           positionInFirstSequence position tested in the first sequence.
           positionInSecondSequence position tested in the second sequence.

   list< RectangleRelativePosition >::iterator
       RectanglePacking::testOfPositionOfNewRectangle (int
       positionInFirstSequence, int positionInSecondSequence) Search the co-
       ordinates of a rectangle for the positions tested in the first and in
       the second sequence of the even sequence. Search the dimensions of the
       rectangle including all the packed rectangles.
       Parameters:
           positionInFirstSequence position tested in the first sequence.
           positionInSecondSequence position tested in the second sequence.

Member Data Documentation

   float RectanglePacking::bestHeightOfBoundingBox Best height of the
       rectangle including all the packed rectangles and a new rectangle to
       pack since the beginning of the position tests.
   int RectanglePacking::bestPlaceInFirstSequence Current best position of a
       new rectangle to pack, in the first sequence, since the beginning of
       the position tests.
   int RectanglePacking::bestPlaceInSecondSequence Current best position of a
       new rectangle to pack, in the second sequence, since the beginning of
       the position tests.
   float RectanglePacking::bestRectangleLeftAbscissa Best left abscissa of a
       new rectangle to pack since the beginning of the position tests.
   float RectanglePacking::bestRectangleLowOrdinate Best low ordinate of a new
       rectangle to pack since the beginning of the position tests.
   float RectanglePacking::bestWidthOfBoundingBox Best width of the rectangle
       including all the packed rectangles and a new rectangle to pack since
       the beginning of the position tests.
   RectangleRelativePositionList* RectanglePacking::firstSequence List which
       is useful for the stocking of the first sequence of the even sequence.
   float RectanglePacking::maxHeightOfBoundingBox Width of the rectangle
       including all the packed rectangles and a new rectangle to pack, for a
       tested position.
   float RectanglePacking::maxWidthOfBoundingBox Width of the rectangle
       including all the packed rectangles and a new rectangle to pack, for a
       tested position.
   float RectanglePacking::newRectangleHeight Height of a new rectangle to
       pack.
   float RectanglePacking::newRectangleLeftAbscissa Left abscissa of a new
       rectangle to pack, for a tested position.
   float RectanglePacking::newRectangleLowOrdinate Low ordinate of a new
       rectangle to pack, for a tested position.
   float RectanglePacking::newRectangleWidth Width of a new rectangle to pack.
   int RectanglePacking::numberOfPositionnedRectangles Current value of the
       number of packed rectangles.
   int RectanglePacking::numberOfRectangles Value of the number of rectangles
       to pack.
   int* RectanglePacking::placesOfRectanglesInSecondSequence Array which is
       used for the stocking of the positions of the rectangles in the second
       sequence.

Author

       Generated automatically by Doxygen for Tulip Plugins Library from the
       source code.