Search in sources :

Example 16 with IAxes

use of net.sf.latexdraw.models.interfaces.shape.IAxes in project latexdraw by arnobl.

the class GenericAxes method updatePathLabels.

default void updatePathLabels() {
    final IAxes model = getModel();
    // NON-NLS
    final Font font = new Font("cmr10", model.getLabelsSize());
    final PlottingStyle labelsDisplay = model.getLabelsDisplayed();
    final PlottingStyle ticksDisplay = model.getTicksDisplayed();
    final TicksStyle ticksStyle = model.getTicksStyle();
    // This fake text is used to compute widths and heights and other font metrics of a current text.
    // NON-NLS
    final Text fooText = new Text("foo");
    fooText.setFont(font);
    if (labelsDisplay.isX()) {
        updatePathLabelsX(ticksDisplay, ticksStyle, fooText);
    }
    if (labelsDisplay.isY()) {
        updatePathLabelsY(ticksDisplay, ticksStyle, fooText);
    }
}
Also used : TicksStyle(net.sf.latexdraw.models.interfaces.shape.TicksStyle) PlottingStyle(net.sf.latexdraw.models.interfaces.shape.PlottingStyle) IAxes(net.sf.latexdraw.models.interfaces.shape.IAxes) Text(javafx.scene.text.Text) Font(javafx.scene.text.Font)

Example 17 with IAxes

use of net.sf.latexdraw.models.interfaces.shape.IAxes in project latexdraw by arnobl.

the class GenericAxes method updatePathLabelsY.

default void updatePathLabelsY(final PlottingStyle ticksDisplay, final TicksStyle ticksStyle, final Text fontText) {
    final IAxes model = getModel();
    final int origy = (int) model.getOriginY();
    final double gap;
    final double height = fontText.getBaselineOffset();
    final boolean noArrowTopY = model.getArrowStyle(2) == ArrowStyle.NONE || model.getGridMaxY() == model.getOriginY();
    final boolean noArrowBotY = model.getArrowStyle(0) == ArrowStyle.NONE || model.getGridMinY() == model.getOriginY();
    final boolean showOrig = model.isShowOrigin();
    final double distY = model.getDistLabelsY();
    final boolean xGE0 = model.getGridMinX() >= 0;
    final double gapy = getGapY();
    if (ticksStyle.isBottom() && ticksDisplay.isY()) {
        gap = -(model.getTicksSize() + model.getThickness() / 2d + GAP_LABEL);
    } else {
        gap = -(model.getThickness() / 2d + GAP_LABEL);
    }
    for (double incry = model.getIncrementY(), maxy = model.getGridMaxY() / distY, miny = model.getGridMinY() / distY, i = miny * incry; i <= maxy * incry; i += incry * distY) {
        final int inti = (int) i;
        if ((inti != 0 || (showOrig && xGE0)) && isElementPaintable(noArrowBotY, noArrowTopY, miny, maxy, inti)) {
            final String str = String.valueOf(inti + origy);
            fontText.setText(str);
            createTextLabel(str, gap - fontText.getBoundsInLocal().getWidth(), height / 2d - inti * gapy, fontText.getFont());
        }
    }
}
Also used : IAxes(net.sf.latexdraw.models.interfaces.shape.IAxes)

Example 18 with IAxes

use of net.sf.latexdraw.models.interfaces.shape.IAxes in project latexdraw by arnobl.

the class GenericAxes method updatePathTicks.

default void updatePathTicks() {
    final IAxes model = getModel();
    final PlottingStyle ticksDisplay = model.getTicksDisplayed();
    final TicksStyle ticksStyle = model.getTicksStyle();
    final double tickLgth = ticksStyle == TicksStyle.FULL ? model.getTicksSize() * 2d : model.getTicksSize();
    if (ticksDisplay.isX()) {
        updatePathTicksX(getGapX(), ticksStyle, tickLgth);
    }
    if (ticksDisplay.isY()) {
        updatePathTicksY(getGapY(), ticksStyle, tickLgth);
    }
    disablePathTicks(!ticksDisplay.isX() && !ticksDisplay.isY());
    setPathTicksFill(Color.BLACK);
}
Also used : TicksStyle(net.sf.latexdraw.models.interfaces.shape.TicksStyle) PlottingStyle(net.sf.latexdraw.models.interfaces.shape.PlottingStyle) IAxes(net.sf.latexdraw.models.interfaces.shape.IAxes)

Example 19 with IAxes

use of net.sf.latexdraw.models.interfaces.shape.IAxes in project latexdraw by arnobl.

the class GenericAxes method updatePathLabelsX.

/**
 * Updates the labels path by drawing the labels of the X-axis.
 */
default void updatePathLabelsX(final PlottingStyle ticksDisplay, final TicksStyle ticksStyle, final Text fontText) {
    final IAxes model = getModel();
    // Painting the labels on the X-axis.
    final int origx = (int) model.getOriginX();
    final double gap = (ticksDisplay.isX() && ticksStyle.isBottom() ? model.getTicksSize() : 0d) + model.getThickness() / 2d + GAP_LABEL;
    final double sep = model.getGridMaxY() <= -model.getOriginY() ? -gap - GAP_LABEL : gap + fontText.getBaselineOffset();
    final boolean noArrowLeftX = model.getArrowStyle(1) == ArrowStyle.NONE || model.getGridMinX() == model.getOriginX();
    final boolean noArrowRightX = model.getArrowStyle(3) == ArrowStyle.NONE || model.getGridMaxX() == model.getOriginX();
    final boolean showOrig = model.isShowOrigin();
    final double distX = model.getDistLabelsX();
    final boolean yGE0 = model.getGridMinY() >= 0;
    final double gapx = getGapX();
    for (double incrx = model.getIncrementX(), maxx = model.getGridMaxX() / distX, minx = model.getGridMinX() / distX, i = minx * incrx; i <= maxx * incrx; i += incrx * distX) {
        final int inti = (int) i;
        if ((inti != 0 || (showOrig && yGE0)) && isElementPaintable(noArrowLeftX, noArrowRightX, minx, maxx, inti)) {
            final String str = String.valueOf(inti + origx);
            fontText.setText(str);
            createTextLabel(str, inti * gapx - fontText.getBoundsInLocal().getWidth() / 2d, sep, fontText.getFont());
        }
    }
}
Also used : IAxes(net.sf.latexdraw.models.interfaces.shape.IAxes)

Example 20 with IAxes

use of net.sf.latexdraw.models.interfaces.shape.IAxes in project latexdraw by arnobl.

the class GenericAxes method updatePathTicksY.

default void updatePathTicksY(final double gapy, final TicksStyle ticksStyle, final double tickLgth) {
    final IAxes model = getModel();
    final boolean noArrowTopY = model.getArrowStyle(2) == ArrowStyle.NONE || model.getGridMaxY() == model.getOriginY();
    final boolean noArrowBotY = model.getArrowStyle(0) == ArrowStyle.NONE || model.getGridMinY() == model.getOriginY();
    final double distY = model.getDistLabelsY();
    final double x;
    switch(ticksStyle) {
        case FULL:
            x = -tickLgth / 2d;
            break;
        case TOP:
            x = 0d;
            break;
        default:
            x = -tickLgth;
    }
    for (double incry = model.getIncrementY(), maxy = model.getGridMaxY() / distY, miny = model.getGridMinY() / distY, i = miny * incry; i <= maxy * incry; i += incry * distY) {
        final int inti = (int) i;
        if (isElementPaintable(noArrowBotY, noArrowTopY, miny, maxy, inti)) {
            final double y = -inti * gapy;
            createPathTicksMoveTo(x, y);
            createPathTicksLineTo(x + tickLgth, y);
        }
    }
}
Also used : IAxes(net.sf.latexdraw.models.interfaces.shape.IAxes)

Aggregations

IAxes (net.sf.latexdraw.models.interfaces.shape.IAxes)50 Theory (org.junit.experimental.theories.Theory)28 Test (org.junit.Test)12 IArrowableSingleShape (net.sf.latexdraw.models.interfaces.shape.IArrowableSingleShape)10 HelperTest (net.sf.latexdraw.HelperTest)7 IShape (net.sf.latexdraw.models.interfaces.shape.IShape)5 PlottingStyle (net.sf.latexdraw.models.interfaces.shape.PlottingStyle)4 TicksStyle (net.sf.latexdraw.models.interfaces.shape.TicksStyle)4 IDot (net.sf.latexdraw.models.interfaces.shape.IDot)3 IPoint (net.sf.latexdraw.models.interfaces.shape.IPoint)3 IRectangle (net.sf.latexdraw.models.interfaces.shape.IRectangle)3 Collections (java.util.Collections)2 ShapeData (net.sf.latexdraw.data.ShapeData)2 ShapeFactory (net.sf.latexdraw.models.ShapeFactory)2 ArrowStyle (net.sf.latexdraw.models.interfaces.shape.ArrowStyle)2 AxesStyle (net.sf.latexdraw.models.interfaces.shape.AxesStyle)2 BorderPos (net.sf.latexdraw.models.interfaces.shape.BorderPos)2 DotStyle (net.sf.latexdraw.models.interfaces.shape.DotStyle)2 FillingStyle (net.sf.latexdraw.models.interfaces.shape.FillingStyle)2 IGroup (net.sf.latexdraw.models.interfaces.shape.IGroup)2