Skip to content

Commit

Permalink
ViewPdf: adding the operations
Browse files Browse the repository at this point in the history
  • Loading branch information
marigostra committed Apr 29, 2021
1 parent 264b1ca commit 0fc3553
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 123 deletions.
105 changes: 1 addition & 104 deletions src/main/java/org/luwrain/app/viewer/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@
import org.luwrain.graphical.*;
import org.luwrain.util.*;

class App implements Application, Pdf.Listener
class App implements Application
{
static private final float SCALE_STEP = 0.2f;
static private final double OFFSET_STEP = 200.0;

private Luwrain luwrain = null;
private Strings strings = null;
Expand Down Expand Up @@ -131,107 +129,6 @@ private void load(String file)
}
}

@Override public void onInputEvent(InputEvent event)
{
NullCheck.notNull(event, "event");
if (!event.isSpecial() && !event.isModified())
switch(event.getChar())
{
case '=':
{
if (pdf == null)
return;
final float newScale = pdf.getScale() + SCALE_STEP;
pdf.setScale(newScale);
luwrain.message("Увеличение");
return;
}
case '-':
{
if (pdf == null)
return;
final float newScale = pdf.getScale() - SCALE_STEP;
if (newScale < 0.5)
{
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
}
pdf.setScale(newScale);
luwrain.message("Уменьшение");
return;
}
}
if (event.isSpecial() && !event.isModified())
switch(event.getSpecial())
{
case PAGE_DOWN:
if (pdf == null)
return;
{
final int nextPage = pdf.getCurrentPageNum() + 1;
if (nextPage >= pdf.getPageCount())
{
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
}
pdf.showPage(nextPage);
luwrain.message("Страница " + (nextPage + 1) + " из " + pdf.getPageCount());//FIXME:
}
return;
case PAGE_UP:
if (pdf == null)
return;
{
final int prevPage = pdf.getCurrentPageNum() - 1;
if (prevPage < 0)
{
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
}
pdf.showPage(prevPage);
luwrain.message("Страница " + (prevPage + 1) + " из " + pdf.getPageCount());//FIXME:
}
return;
case ARROW_RIGHT:
if (pdf == null)
return;
if (pdf.setOffsetX(pdf.getOffsetX() + OFFSET_STEP))
luwrain.message("Сдвиг вправо"); else //FIXME:
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
case ARROW_LEFT:
if (pdf == null)
return;
if (pdf.setOffsetX(pdf.getOffsetX() - OFFSET_STEP))
luwrain.message("Сдвиг влево"); else//FIXME:
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
case ARROW_UP:
if (pdf == null)
return;
if (pdf.setOffsetY(pdf.getOffsetY() - OFFSET_STEP))
luwrain.message("Сдвиг вверх"); else //FIXME:
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
case ARROW_DOWN:
if (pdf == null)
return;
if (pdf.setOffsetY(pdf.getOffsetY() + OFFSET_STEP))
luwrain.message("Сдвиг вниз"); else //FIXME:
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
return;
case ESCAPE:
if (pdf != null)
{
pdf.close();
pdf = null;
closeApp();
}
return;
}
luwrain.playSound(Sounds.EVENT_NOT_PROCESSED);
}

@Override public void closeApp()
{
luwrain.closeApp();
Expand Down
121 changes: 102 additions & 19 deletions src/main/java/org/luwrain/app/viewer/ViewPdf.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,15 @@
import org.luwrain.core.events.*;
import org.luwrain.graphical.javafx.*;

final class ViewPdf
abstract class ViewPdf
{
static final String LOG_COMPONENT = "pdf";
static private final float SCALE_STEP = 0.2f;
static private final double OFFSET_STEP = 200.0;


private final Luwrain luwrain;
private ResizableCanvas canvas = null;
// private final org.luwrain.graphical.Pdf.Listener listener;

private final PDDocument doc;
private final PDFRenderer rend;
private Image image = null;
Expand All @@ -66,6 +67,17 @@ final class ViewPdf
Log.debug(LOG_COMPONENT, "PDF renderer created");
}

abstract void inaccessible();
abstract void announcePage(int pageNum, int pageCount);
abstract void announceMoveLeft();
abstract void announceMoveRight();
abstract void announceMoveUp();
abstract void announceMoveDown();
abstract void announceZoomIn();
abstract void announceZoomOut();



public void show()
{
FxThread.runInFxThreadSync(()->{
Expand All @@ -87,7 +99,80 @@ public void show()
});
}

private void drawInitial()

private void nextPage()
{
final int nextPage = getCurrentPageNum() + 1;
if (nextPage >= getPageCount())
{
inaccessible();
return;
}
showPage(nextPage);
announcePage(nextPage + 1, getPageCount());
}

private void prevPage()
{
final int prevPage = getCurrentPageNum() - 1;
if (prevPage < 0)
{
inaccessible();
return;
}
showPage(prevPage);
announcePage(prevPage + 1, getPageCount());
}

private void moveRight()
{
if (setOffsetX(getOffsetX() + OFFSET_STEP))
announceMoveRight(); else
inaccessible();
}

private void moveLeft()
{
if (setOffsetX(getOffsetX() - OFFSET_STEP))
announceMoveLeft(); else
inaccessible();
}

private void moveUp()
{
if (setOffsetY(getOffsetY() - OFFSET_STEP))
announceMoveUp(); else
inaccessible();
return;
}

private void moveDown()
{
if (setOffsetY(getOffsetY() + OFFSET_STEP))
announceMoveDown(); else
inaccessible();
}

private void zoomIn()
{
final float newScale = getScale() + SCALE_STEP;
setScale(newScale);
announceZoomIn();
}

private void zoomOut()
{
final float newScale = getScale() - SCALE_STEP;
if (newScale < 0.5)
{
inaccessible();
return;
}
setScale(newScale);
announceZoomOut();
}

private void drawInitial()
{
this.offsetX = 0;
this.offsetY = 0;
Expand Down Expand Up @@ -118,27 +203,27 @@ public boolean showPage(int index)
return false;
}

public int getPageCount()
int getPageCount()
{
return doc.getNumberOfPages();
}

public int getCurrentPageNum()
private int getCurrentPageNum()
{
return pageNum;
}

public double getOffsetX()
double getOffsetX()
{
return offsetX;
}

public double getOffsetY()
double getOffsetY()
{
return offsetY;
}

public boolean setOffsetX(double value)
boolean setOffsetX(double value)
{
if (value < 0)
return false;
Expand All @@ -153,7 +238,7 @@ public boolean setOffsetX(double value)
return true;
}

public boolean setOffsetY(double value)
boolean setOffsetY(double value)
{
if (value < 0)
return false;
Expand All @@ -168,12 +253,12 @@ public boolean setOffsetY(double value)
return true;
}

public float getScale()
float getScale()
{
return scale;
}

public void setScale(float value)
private void setScale(float value)
{
if (value < 0.5)
throw new IllegalArgumentException("Too small scale");
Expand All @@ -183,10 +268,10 @@ public void setScale(float value)
draw();
});
}

private void draw()
{
// InvalidThreadException.checkThread("PdfPreview.draw()");
FxThread.ensure();
if (image == null || canvas == null)
return;
final double imageWidth = image.getWidth();
Expand All @@ -203,11 +288,9 @@ private void draw()
horizFrag.to, vertFrag.to, horizFrag.size, vertFrag.size);
}



private Image makeImage(int pageNum, float scale)
{
// InvalidThreadException.checkThread("PdfPreview.makeImage");
FxThread.ensure();
final BufferedImage pageImage;
try {
pageImage = rend.renderImage(pageNum, scale);
Expand All @@ -225,10 +308,11 @@ private Image makeImage(int pageNum, float scale)
private void onKey(KeyEvent event)
{
NullCheck.notNull(event, "event");
FxThread.ensure();
switch(event.getCode())
{
case ESCAPE:
// listener.onInputEvent(new InputEvent(InputEvent.Special.ESCAPE));
close();
break;
case PAGE_DOWN:
// listener.onInputEvent(new InputEvent(InputEvent.Special.PAGE_DOWN));
Expand Down Expand Up @@ -272,7 +356,6 @@ static private final class Fragment
final double from;
final double to;
final double size;

Fragment(double from, double to, double size)
{
this.from = from;
Expand Down

0 comments on commit 0fc3553

Please sign in to comment.