Skip to content
Snippets Groups Projects
Commit b5eac492 authored by Leonard Kupper's avatar Leonard Kupper
Browse files

Extend logging statements fpr multiple classes.

parent 97ff60ba
No related branches found
No related tags found
1 merge request!13Feat/rasterizer update 21
Showing
with 86 additions and 21 deletions
package de.tudresden.inf.mci.brailleplot; package de.tudresden.inf.mci.brailleplot;
import ch.qos.logback.classic.Level;
import de.tudresden.inf.mci.brailleplot.commandline.CommandLineParser; import de.tudresden.inf.mci.brailleplot.commandline.CommandLineParser;
import de.tudresden.inf.mci.brailleplot.commandline.SettingType; import de.tudresden.inf.mci.brailleplot.commandline.SettingType;
import de.tudresden.inf.mci.brailleplot.commandline.SettingsReader; import de.tudresden.inf.mci.brailleplot.commandline.SettingsReader;
...@@ -102,6 +103,11 @@ public final class App { ...@@ -102,6 +103,11 @@ public final class App {
System.exit(EXIT_ERROR); System.exit(EXIT_ERROR);
} }
public static void setLoggingLevel(final ch.qos.logback.classic.Level level) {
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
root.setLevel(level);
}
/** /**
* Main loop of the application. * Main loop of the application.
* @param args Command line parameters. * @param args Command line parameters.
...@@ -117,6 +123,7 @@ public final class App { ...@@ -117,6 +123,7 @@ public final class App {
try { try {
// Logging example // Logging example
mLogger.info("Application started"); mLogger.info("Application started");
setLoggingLevel(Level.TRACE);
// Parse command line parameters // Parse command line parameters
CommandLineParser cliParser = new CommandLineParser(); CommandLineParser cliParser = new CommandLineParser();
......
...@@ -22,6 +22,10 @@ public final class Printer extends Configurable { ...@@ -22,6 +22,10 @@ public final class Printer extends Configurable {
@Override @Override
public String toString() { public String toString() {
return "printer configuration"; if (getPropertyNames().contains("name")) {
return "printer configuration (" + getProperty("name") + ")";
} else {
return "printer configuration";
}
} }
} }
...@@ -3,6 +3,8 @@ package de.tudresden.inf.mci.brailleplot.rendering; ...@@ -3,6 +3,8 @@ package de.tudresden.inf.mci.brailleplot.rendering;
import de.tudresden.inf.mci.brailleplot.configparser.Format; import de.tudresden.inf.mci.brailleplot.configparser.Format;
import de.tudresden.inf.mci.brailleplot.configparser.Printer; import de.tudresden.inf.mci.brailleplot.configparser.Printer;
import de.tudresden.inf.mci.brailleplot.printabledata.PrintableData; import de.tudresden.inf.mci.brailleplot.printabledata.PrintableData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -15,6 +17,8 @@ import java.util.ListIterator; ...@@ -15,6 +17,8 @@ import java.util.ListIterator;
*/ */
public abstract class AbstractCanvas { public abstract class AbstractCanvas {
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
Printer mPrinter; Printer mPrinter;
Format mFormat; Format mFormat;
...@@ -23,21 +27,28 @@ public abstract class AbstractCanvas { ...@@ -23,21 +27,28 @@ public abstract class AbstractCanvas {
List<PrintableData> mPageContainer; List<PrintableData> mPageContainer;
AbstractCanvas(final Printer printer, final Format format) throws InsufficientRenderingAreaException { AbstractCanvas(final Printer printer, final Format format) throws InsufficientRenderingAreaException {
mLogger.trace("Creating new canvas");
mPrinter = printer; mPrinter = printer;
mFormat = format; mFormat = format;
mPageContainer = new ArrayList<>(); mPageContainer = new ArrayList<>();
readConfig(); readConfig();
} }
private void readConfig() throws InsufficientRenderingAreaException { private void readConfig() throws InsufficientRenderingAreaException {
mLogger.trace("Reading general printer and format configuration for printing area calculation");
// New approach using a box model: // New approach using a box model:
// Create a page box // Create a page box
int pageWidth = mFormat.getProperty("page.width").toInt(); int pageWidth = mFormat.getProperty("page.width").toInt();
int pageHeight = mFormat.getProperty("page.height").toInt(); int pageHeight = mFormat.getProperty("page.height").toInt();
Rectangle pageBox = new Rectangle(0, 0, pageWidth, pageHeight); Rectangle pageBox = new Rectangle(0, 0, pageWidth, pageHeight);
mLogger.trace("Determined page box: {}", pageBox);
// Create a margin box // Create a margin box
int marginTop = mFormat.getProperty("margin.top").toInt(); int marginTop = mFormat.getProperty("margin.top").toInt();
...@@ -53,6 +64,7 @@ public abstract class AbstractCanvas { ...@@ -53,6 +64,7 @@ public abstract class AbstractCanvas {
} catch (Rectangle.OutOfSpaceException e) { } catch (Rectangle.OutOfSpaceException e) {
throw new InsufficientRenderingAreaException("The sum of the defined margins is bigger than the page size.", e); throw new InsufficientRenderingAreaException("The sum of the defined margins is bigger than the page size.", e);
} }
mLogger.trace("Determined margin box: {}", marginBox);
// Create a constraint box // Create a constraint box
double constraintTop = mPrinter.getProperty("constraint.top").toDouble(); double constraintTop = mPrinter.getProperty("constraint.top").toDouble();
...@@ -69,8 +81,10 @@ public abstract class AbstractCanvas { ...@@ -69,8 +81,10 @@ public abstract class AbstractCanvas {
constraintWidth = Integer.MAX_VALUE; constraintWidth = Integer.MAX_VALUE;
} }
Rectangle constraintBox = new Rectangle(constraintLeft, constraintTop, constraintWidth, constraintHeight); Rectangle constraintBox = new Rectangle(constraintLeft, constraintTop, constraintWidth, constraintHeight);
mLogger.trace("Determined constraint box: {}", constraintBox);
mPrintableArea = calculatePrintingArea(marginBox, constraintBox); mPrintableArea = calculatePrintingArea(marginBox, constraintBox);
mLogger.info("The calculated available printing area equals: {}", mPrintableArea);
} }
......
package de.tudresden.inf.mci.brailleplot.rendering; package de.tudresden.inf.mci.brailleplot.rendering;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* FunctionalRasterizer. This class implements a concrete rasterizer via a functional interface. * FunctionalRasterizer. This class implements a concrete rasterizer via a functional interface.
* The rasterizing algorithm to be used is passed to the constructor as lambda function, method reference or rasterizer implementation. * The rasterizing algorithm to be used is passed to the constructor as lambda function, method reference or rasterizer implementation.
...@@ -9,6 +12,8 @@ package de.tudresden.inf.mci.brailleplot.rendering; ...@@ -9,6 +12,8 @@ package de.tudresden.inf.mci.brailleplot.rendering;
*/ */
public class FunctionalRasterizer<T extends Renderable> implements Rasterizer { public class FunctionalRasterizer<T extends Renderable> implements Rasterizer {
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
private Class<? extends T> mSupportedRenderableClass; private Class<? extends T> mSupportedRenderableClass;
private ThrowingBiConsumer<T, RasterCanvas, InsufficientRenderingAreaException> mRasterizingAlgorithm; private ThrowingBiConsumer<T, RasterCanvas, InsufficientRenderingAreaException> mRasterizingAlgorithm;
...@@ -21,6 +26,8 @@ public class FunctionalRasterizer<T extends Renderable> implements Rasterizer { ...@@ -21,6 +26,8 @@ public class FunctionalRasterizer<T extends Renderable> implements Rasterizer {
public FunctionalRasterizer( public FunctionalRasterizer(
final Class<T> supportedRenderableClass, final Class<T> supportedRenderableClass,
final Rasterizer<T> rasterizer) { final Rasterizer<T> rasterizer) {
mLogger.info("Creating new FunctionalRasterizer: Binding {} rasterizer {}.",
supportedRenderableClass.getSimpleName(), rasterizer);
mSupportedRenderableClass = supportedRenderableClass; mSupportedRenderableClass = supportedRenderableClass;
mRasterizingAlgorithm = rasterizer::rasterize; mRasterizingAlgorithm = rasterizer::rasterize;
} }
...@@ -28,8 +35,9 @@ public class FunctionalRasterizer<T extends Renderable> implements Rasterizer { ...@@ -28,8 +35,9 @@ public class FunctionalRasterizer<T extends Renderable> implements Rasterizer {
@Override @Override
public void rasterize(final Renderable data, final RasterCanvas canvas) throws InsufficientRenderingAreaException { public void rasterize(final Renderable data, final RasterCanvas canvas) throws InsufficientRenderingAreaException {
// invoke the given rasterizing algorithm // invoke the given rasterizing algorithm
T diagram = safeCast(data); T safeData = safeCast(data);
mRasterizingAlgorithm.accept(diagram, canvas); mLogger.trace("Delegating task to bound rasterizing algorithm {}", mRasterizingAlgorithm);
mRasterizingAlgorithm.accept(safeData, canvas);
} }
final Class<? extends T> getSupportedRenderableClass() { final Class<? extends T> getSupportedRenderableClass() {
......
...@@ -85,7 +85,7 @@ public class FunctionalRenderingBase { ...@@ -85,7 +85,7 @@ public class FunctionalRenderingBase {
*/ */
public void setRasterCanvas(final RasterCanvas raster) { public void setRasterCanvas(final RasterCanvas raster) {
mRaster = Objects.requireNonNull(raster); mRaster = Objects.requireNonNull(raster);
mLogger.info("RasterCanvas has been set to instance [{}]", raster.hashCode()); mLogger.info("RasterCanvas has been set to instance {}", raster);
} }
/** /**
......
package de.tudresden.inf.mci.brailleplot.rendering; package de.tudresden.inf.mci.brailleplot.rendering;
import de.tudresden.inf.mci.brailleplot.printabledata.MatrixData; import de.tudresden.inf.mci.brailleplot.printabledata.MatrixData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
...@@ -20,6 +22,8 @@ public class ImageRasterizer implements Rasterizer<Image> { ...@@ -20,6 +22,8 @@ public class ImageRasterizer implements Rasterizer<Image> {
// it is technically also possible to implement a rasterizer as a method independent from a class, as long // it is technically also possible to implement a rasterizer as a method independent from a class, as long
// as it takes a renderable and a canvas as parameters. // as it takes a renderable and a canvas as parameters.
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
// Switches // Switches
private boolean mPreventOverStretch; private boolean mPreventOverStretch;
private boolean mPreserveAspectRatio; private boolean mPreserveAspectRatio;
...@@ -27,16 +31,14 @@ public class ImageRasterizer implements Rasterizer<Image> { ...@@ -27,16 +31,14 @@ public class ImageRasterizer implements Rasterizer<Image> {
// Output threshold: A dot will be set for gray scale values below (darker than/equal) this threshold. // Output threshold: A dot will be set for gray scale values below (darker than/equal) this threshold.
private int mLowThreshold; private int mLowThreshold;
private final int mDefaultThreshold = 80; private static final int DEFAULT_THRESHOLD = 80;
/** /**
* Constructor. Creates a new {@link Rasterizer} for instances of {@link Image} with default settings. * Constructor. Creates a new {@link Rasterizer} for instances of {@link Image} with default settings.
*/ */
public ImageRasterizer() { public ImageRasterizer() {
mPreventOverStretch = true; this(true, true, true, DEFAULT_THRESHOLD);
mPreserveAspectRatio = true; mLogger.trace("Created ImageRasterizer with default settings");
mQuantifiedPositions = true;
mLowThreshold = mDefaultThreshold;
} }
/** /**
...@@ -60,6 +62,8 @@ public class ImageRasterizer implements Rasterizer<Image> { ...@@ -60,6 +62,8 @@ public class ImageRasterizer implements Rasterizer<Image> {
mPreserveAspectRatio = preserveAspectRatio; mPreserveAspectRatio = preserveAspectRatio;
mQuantifiedPositions = useQuantifiedPositions; mQuantifiedPositions = useQuantifiedPositions;
mLowThreshold = threshold; mLowThreshold = threshold;
mLogger.trace("Created ImageRasterizer. Settings: preventOverStretch={}, preserveAspectRatio={}, useQuantifiedPositions={}, lowThreshold={}",
mPreventOverStretch, mPreserveAspectRatio, mQuantifiedPositions, mLowThreshold);
} }
/** /**
...@@ -83,6 +87,9 @@ public class ImageRasterizer implements Rasterizer<Image> { ...@@ -83,6 +87,9 @@ public class ImageRasterizer implements Rasterizer<Image> {
// the grey scale value of each pixel. // the grey scale value of each pixel.
// A more sophisticated implementation could utilize an edge finding algorithm. // A more sophisticated implementation could utilize an edge finding algorithm.
mLogger.info("Rasterizing Image {}", imgData);
mLogger.trace("Retrieving buffered image.");
// First, a readable representation of the is retrieved. // First, a readable representation of the is retrieved.
BufferedImage imgBuf = imgData.getBufferedImage(); BufferedImage imgBuf = imgData.getBufferedImage();
...@@ -98,6 +105,8 @@ public class ImageRasterizer implements Rasterizer<Image> { ...@@ -98,6 +105,8 @@ public class ImageRasterizer implements Rasterizer<Image> {
private void linearMapping(final BufferedImage imgBuf, final RasterCanvas canvas) { private void linearMapping(final BufferedImage imgBuf, final RasterCanvas canvas) {
mLogger.trace("Apply linear mapping algorithm.");
// A canvas is basically a wrapper for multiple representations of printable data, each representing a page. // A canvas is basically a wrapper for multiple representations of printable data, each representing a page.
// These representations can be acquired by either requesting the current page or creating a new page. // These representations can be acquired by either requesting the current page or creating a new page.
MatrixData<Boolean> data = canvas.getNewPage(); MatrixData<Boolean> data = canvas.getNewPage();
...@@ -153,6 +162,8 @@ public class ImageRasterizer implements Rasterizer<Image> { ...@@ -153,6 +162,8 @@ public class ImageRasterizer implements Rasterizer<Image> {
private void quantifiedPositionMapping(final BufferedImage imgBuf, final RasterCanvas canvas) { private void quantifiedPositionMapping(final BufferedImage imgBuf, final RasterCanvas canvas) {
mLogger.trace("Apply quantified position algorithm.");
MatrixData<Boolean> data = canvas.getNewPage(); MatrixData<Boolean> data = canvas.getNewPage();
// Instead of using the dot rectangle a rectangle representing the target printing space in millimeters // Instead of using the dot rectangle a rectangle representing the target printing space in millimeters
......
...@@ -5,8 +5,6 @@ import org.slf4j.LoggerFactory; ...@@ -5,8 +5,6 @@ import org.slf4j.LoggerFactory;
import de.tudresden.inf.mci.brailleplot.configparser.Format; import de.tudresden.inf.mci.brailleplot.configparser.Format;
import de.tudresden.inf.mci.brailleplot.configparser.Printer; import de.tudresden.inf.mci.brailleplot.configparser.Printer;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
import java.util.Objects; import java.util.Objects;
...@@ -54,13 +52,13 @@ public final class MasterRenderer { ...@@ -54,13 +52,13 @@ public final class MasterRenderer {
} }
public RasterCanvas rasterize(final Renderable data) throws InsufficientRenderingAreaException { public RasterCanvas rasterize(final Renderable data) throws InsufficientRenderingAreaException {
mLogger.info("Starting a new {} rasterizing on RenderingBase {}", mLogger.info("Preparing a new {} rasterizing on RenderingBase {}",
data.getClass().getSimpleName(), mRenderingBase.hashCode()); data.getClass().getSimpleName(), mRenderingBase);
RasterCanvas canvas = createCompatibleRasterCanvas(); RasterCanvas canvas = createCompatibleRasterCanvas();
mRenderingBase.setRasterCanvas(canvas); mRenderingBase.setRasterCanvas(canvas);
mRenderingBase.rasterize(data); mRenderingBase.rasterize(data);
mLogger.info("Rasterizing of {} on RenderingBase {} has finished", mLogger.info("Rasterizing of {} on RenderingBase {} has finished, result containing {} pages",
data.getClass().getSimpleName(), mRenderingBase.hashCode()); data.getClass().getSimpleName(), mRenderingBase, canvas.getPageCount());
return canvas; return canvas;
} }
...@@ -89,7 +87,7 @@ public final class MasterRenderer { ...@@ -89,7 +87,7 @@ public final class MasterRenderer {
public void setPrinter(final Printer printer) { public void setPrinter(final Printer printer) {
mPrinter = Objects.requireNonNull(printer); mPrinter = Objects.requireNonNull(printer);
mLogger.info("Rendering context: Printer was set to {}", mPrinter.getProperty("name")); // TODO: Printer.toString() should append printer name. mLogger.info("Rendering context: Printer was set to {}", mPrinter);
} }
public Printer getPrinter() { public Printer getPrinter() {
return mPrinter; return mPrinter;
...@@ -105,7 +103,7 @@ public final class MasterRenderer { ...@@ -105,7 +103,7 @@ public final class MasterRenderer {
public void setRenderingBase(final FunctionalRenderingBase renderingBase) { public void setRenderingBase(final FunctionalRenderingBase renderingBase) {
mRenderingBase = Objects.requireNonNull(renderingBase); mRenderingBase = Objects.requireNonNull(renderingBase);
mLogger.info("Rendering context: Set RenderingBase to instance [{}]", mRenderingBase.hashCode()); mLogger.info("Rendering context: Set RenderingBase to instance {}", mRenderingBase);
} }
public FunctionalRenderingBase getRenderingBase() { public FunctionalRenderingBase getRenderingBase() {
return mRenderingBase; return mRenderingBase;
......
...@@ -4,6 +4,8 @@ import de.tudresden.inf.mci.brailleplot.configparser.Format; ...@@ -4,6 +4,8 @@ import de.tudresden.inf.mci.brailleplot.configparser.Format;
import de.tudresden.inf.mci.brailleplot.configparser.Printer; import de.tudresden.inf.mci.brailleplot.configparser.Printer;
import de.tudresden.inf.mci.brailleplot.printabledata.MatrixData; import de.tudresden.inf.mci.brailleplot.printabledata.MatrixData;
import de.tudresden.inf.mci.brailleplot.printabledata.SimpleMatrixDataImpl; import de.tudresden.inf.mci.brailleplot.printabledata.SimpleMatrixDataImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -19,6 +21,8 @@ import static java.lang.Math.floor; ...@@ -19,6 +21,8 @@ import static java.lang.Math.floor;
*/ */
public class RasterCanvas extends AbstractCanvas { public class RasterCanvas extends AbstractCanvas {
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
private ArrayList<Double> mXPositions; private ArrayList<Double> mXPositions;
private ArrayList<Double> mYPositions; private ArrayList<Double> mYPositions;
...@@ -64,11 +68,13 @@ public class RasterCanvas extends AbstractCanvas { ...@@ -64,11 +68,13 @@ public class RasterCanvas extends AbstractCanvas {
// Cell size in dots // Cell size in dots
mCellWidth = cellWidth; mCellWidth = cellWidth;
mCellHeight = cellHeight; mCellHeight = cellHeight;
mLogger.trace("Cell size set to {}x{}", mCellWidth, mCellHeight);
readConfig(); readConfig();
calculateRasterSize(); calculateRasterSize();
calculateSpacing(); calculateSpacing();
mLogger.info("New RasterCanvas created from config: {}, {}", printer, format);
} }
public final MatrixData<Boolean> getNewPage() { public final MatrixData<Boolean> getNewPage() {
...@@ -88,6 +94,8 @@ public class RasterCanvas extends AbstractCanvas { ...@@ -88,6 +94,8 @@ public class RasterCanvas extends AbstractCanvas {
private void readConfig() { private void readConfig() {
mLogger.trace("Reading raster specific configuration");
// What are the dot and cell distances in mm? // What are the dot and cell distances in mm?
mHorizontalDotDistance = mPrinter.getProperty("raster.dotDistance.horizontal").toDouble(); mHorizontalDotDistance = mPrinter.getProperty("raster.dotDistance.horizontal").toDouble();
mVerticalDotDistance = mPrinter.getProperty("raster.dotDistance.vertical").toDouble(); mVerticalDotDistance = mPrinter.getProperty("raster.dotDistance.vertical").toDouble();
...@@ -105,6 +113,7 @@ public class RasterCanvas extends AbstractCanvas { ...@@ -105,6 +113,7 @@ public class RasterCanvas extends AbstractCanvas {
// New approach using a box model: // New approach using a box model:
mLogger.trace("Fitting raster into available printing area");
// Dividing the printable area into cells to create a cell raster box. // Dividing the printable area into cells to create a cell raster box.
int cellRasterX = (int) ceil(mPrintableArea.getX() / mCellHorizontalMM); int cellRasterX = (int) ceil(mPrintableArea.getX() / mCellHorizontalMM);
int cellRasterY = (int) ceil(mPrintableArea.getY() / mCellVerticalMM); int cellRasterY = (int) ceil(mPrintableArea.getY() / mCellVerticalMM);
...@@ -115,6 +124,7 @@ public class RasterCanvas extends AbstractCanvas { ...@@ -115,6 +124,7 @@ public class RasterCanvas extends AbstractCanvas {
cellRasterR - cellRasterX, cellRasterR - cellRasterX,
cellRasterB - cellRasterY cellRasterB - cellRasterY
); );
mLogger.trace("Determined cellRasterBox: {}", cellRasterBox);
// The following properties impact the printing area, but are specific to rasterizing. (That's why they weren't read before in the AbstractCanvas) // The following properties impact the printing area, but are specific to rasterizing. (That's why they weren't read before in the AbstractCanvas)
// The abstract parent class (AbstractCanvas) already calculated indentations based on millimeters, but it is // The abstract parent class (AbstractCanvas) already calculated indentations based on millimeters, but it is
...@@ -136,8 +146,10 @@ public class RasterCanvas extends AbstractCanvas { ...@@ -136,8 +146,10 @@ public class RasterCanvas extends AbstractCanvas {
} }
Rectangle rasterConstraintBox = new Rectangle(rasterConstraintLeft, rasterConstraintTop, Rectangle rasterConstraintBox = new Rectangle(rasterConstraintLeft, rasterConstraintTop,
rasterConstraintWidth, rasterConstraintHeight); rasterConstraintWidth, rasterConstraintHeight);
mLogger.trace("Determined rasterConstraintBox: {}", rasterConstraintBox);
mPrintingAreaCells = calculatePrintingArea(cellRasterBox, rasterConstraintBox); mPrintingAreaCells = calculatePrintingArea(cellRasterBox, rasterConstraintBox);
mLogger.trace("Determined printable raster: {}", mPrintingAreaCells);
// The following values are set to keep track of the 'real' size of the internal data representation, because // The following values are set to keep track of the 'real' size of the internal data representation, because
// the margins are created virtually by printing some empty cells at the pages top / left edge. // the margins are created virtually by printing some empty cells at the pages top / left edge.
...@@ -150,13 +162,17 @@ public class RasterCanvas extends AbstractCanvas { ...@@ -150,13 +162,17 @@ public class RasterCanvas extends AbstractCanvas {
// To how many dots does this raster size correspond? // To how many dots does this raster size correspond?
mColumnCount = mHorizontalCellCount * mCellWidth; mColumnCount = mHorizontalCellCount * mCellWidth;
mRowCount = mVerticalCellCount * mCellHeight; mRowCount = mVerticalCellCount * mCellHeight;
mLogger.trace("Determined raster dimensions (dots): {} columns x {} rows", mColumnCount, mRowCount);
} }
private void calculateSpacing() { private void calculateSpacing() {
mLogger.trace("Pre calculating quantified raster positions.");
mXPositions = calculateQuantizedPositions(mHorizontalDotDistance, mHorizontalCellDistance, mCellWidth, mHorizontalCellCount); mXPositions = calculateQuantizedPositions(mHorizontalDotDistance, mHorizontalCellDistance, mCellWidth, mHorizontalCellCount);
mLogger.trace("X coordinates: {}", mXPositions);
mYPositions = calculateQuantizedPositions(mVerticalDotDistance, mVerticalCellDistance, mCellHeight, mVerticalCellCount); mYPositions = calculateQuantizedPositions(mVerticalDotDistance, mVerticalCellDistance, mCellHeight, mVerticalCellCount);
mLogger.trace("Y coordinates: {}", mYPositions);
} }
......
package de.tudresden.inf.mci.brailleplot.rendering; package de.tudresden.inf.mci.brailleplot.rendering;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Objects; import java.util.Objects;
import static java.lang.Math.round; import static java.lang.Math.round;
...@@ -14,6 +17,8 @@ import static java.lang.Math.max; ...@@ -14,6 +17,8 @@ import static java.lang.Math.max;
*/ */
public class Rectangle { public class Rectangle {
private final Logger mLogger = LoggerFactory.getLogger(this.getClass());
private double mX, mY, mW, mH; private double mX, mY, mW, mH;
/** /**
...@@ -28,6 +33,7 @@ public class Rectangle { ...@@ -28,6 +33,7 @@ public class Rectangle {
setY(y); setY(y);
setWidth(w); setWidth(w);
setHeight(h); setHeight(h);
mLogger.trace("Created new rectangle: {}", this);
} }
/** /**
...@@ -39,6 +45,7 @@ public class Rectangle { ...@@ -39,6 +45,7 @@ public class Rectangle {
setY(rect.getY()); setY(rect.getY());
setWidth(rect.getWidth()); setWidth(rect.getWidth());
setHeight(rect.getHeight()); setHeight(rect.getHeight());
mLogger.trace("Copied rectangle: {}", this);
} }
/** /**
......
...@@ -23,9 +23,9 @@ printer.floatingDot.resolution=0.05 ...@@ -23,9 +23,9 @@ printer.floatingDot.resolution=0.05
# The following values represent the fixed indentation and maximum technical printing area of the embosser. # The following values represent the fixed indentation and maximum technical printing area of the embosser.
# If the outputs don't fit on the page you might want to tweak this values. (Check the format too.) # If the outputs don't fit on the page you might want to tweak this values. (Check the format too.)
printer.constraint.top=5.0 printer.constraint.top=12
printer.constraint.left=0 printer.constraint.left=40
#printer.constraint.width=? TODO: Check out manual, Conduct printing tests with bigger formats printer.constraint.width=100
#printer.constraint.height=? #printer.constraint.height=?
# The second constraint in the printer.raster namespace helps to limit the available printing area in steps of # The second constraint in the printer.raster namespace helps to limit the available printing area in steps of
# whole cells, for example if the printer enforces a maximum char per line limit or borders are activated. # whole cells, for example if the printer enforces a maximum char per line limit or borders are activated.
...@@ -49,7 +49,7 @@ format.A4.page.width=210 ...@@ -49,7 +49,7 @@ format.A4.page.width=210
format.A4.page.height=297 format.A4.page.height=297
format.A4.margin.top=0 format.A4.margin.top=0
format.A4.margin.left=0 format.A4.margin.left=0
format.A4.margin.bottom=0 format.A4.margin.bottom=55
format.A4.margin.right=0 format.A4.margin.right=0
# A5 Format # A5 Format
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment