Logo Search packages:      
Sourcecode: wims version File versions  Download package

Dimension fr::ove::openmath::jome::ctrlview::bidim::BetweenOperatorLayout::computeAttributes (  )  [inline, virtual, inherited]

Computes the size of the display according to its children size (if any), and its different attributes.

Returns:
the size of the display.

Reimplemented from fr::ove::openmath::jome::ctrlview::bidim::VerticalCenteredLayout.

Reimplemented in fr::ove::openmath::jome::ctrlview::bidim::FractionLayout.

Definition at line 165 of file BetweenOperatorLayout.java.

References fr::ove::openmath::jome::ctrlview::bidim::DisplayLayout::displayToLay, fr::ove::openmath::jome::ctrlview::bidim::Display::getAscent(), fr::ove::openmath::jome::ctrlview::bidim::Display::getHeight(), fr::ove::openmath::jome::ctrlview::bidim::Display::getShiftY(), fr::ove::openmath::jome::ctrlview::bidim::Display::setAscent(), fr::ove::openmath::jome::ctrlview::bidim::Display::setComputeAttributes(), fr::ove::openmath::jome::ctrlview::bidim::Display::setDescent(), and fr::ove::openmath::jome::ctrlview::bidim::Display::setShiftY().

                                         {
        Display displayOperator = (Display) displayToLay.getComponent(0);
        Display topOperand = (Display) displayToLay.getComponent(1);
        Display bottomOperand = (Display) displayToLay.getComponent(2);
        // Initialisation de ces paramètres pour annuler les (éventuelles) précédentes valeurs prises.
        displayOperator.setShiftY(0);
        topOperand.setShiftY(0);
        bottomOperand.setShiftY(0);

        // On calcule les attributs des display enfants comme si on avait affaire à un VerticalCenteredLayout.
        // La différece réside dans le fait qu'il faut faire en sorte que le display de l'opérateur soit affiché
        // entre les opérandes
        Dimension dim = super.computeAttributes(); 
        

        // Cette taille là correspond au décalage qu'il faut appliquer à la barre de fraction
        displayOperator.setShiftY(topOperand.getHeight());
        // Mais il faut l'enlever au display du numérateur
        topOperand.setShiftY(-displayOperator.getShiftY() - displayOperator.getHeight());
        bottomOperand.setShiftY(displayOperator.getHeight());
        
        // On met la baseline de la fraction sur celle de la barre de fraction + qque broutilles qui
        // correspondent à où se trouve la barre horizontale du +
        int ascent = displayToLay.getFontMetrics(displayToLay.getFont()).getAscent();
        ascent = (int) Math.round(((float) ascent)*0.388f);
        
        ascent += topOperand.getShiftY() + topOperand.getHeight() + 
                 displayOperator.getShiftY() + displayOperator.getAscent();
        
        displayToLay.setAscent(ascent);
        displayToLay.setDescent(dim.height - ascent);
        
        displayToLay.setComputeAttributes(false);
        
        return dim;
    }


Generated by  Doxygen 1.6.0   Back to index