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);
}
}
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());
}
}
}
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);
}
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());
}
}
}
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);
}
}
}
Aggregations