Merge pull request #638 from peetCreative/fix_issue_404

make Zoomrange adjustable
presentation
peetCreative 7 years ago committed by GitHub
commit c0ef4ee4ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 59
      src/control/zoom/ZoomControl.cpp
  2. 20
      src/control/zoom/ZoomControl.h
  3. 10
      src/gui/toolbarMenubar/ToolZoomSlider.cpp

@ -5,8 +5,6 @@
#include "gui/widgets/XournalWidget.h"
#include "gui/XournalView.h"
const double zoomStep = 0.04;
ZoomControl::ZoomControl()
: view(NULL)
{
@ -18,6 +16,10 @@ ZoomControl::ZoomControl()
this->zoomFitValue = 1.0;
this->zoomFitMode = true;
this->zoomStep = DEFAULT_ZOOM_STEP;
this->zoomMax = DEFAULT_ZOOM_MAX;
this->zoomMin = DEFAULT_ZOOM_MIN;
this->zoomSequenceStart = -1;
this->zoomWidgetPosX = 0;
@ -150,14 +152,14 @@ void ZoomControl::fireZoomChanged()
{
XOJ_CHECK_TYPE(ZoomControl);
if (this->zoom < MIN_ZOOM)
if (this->zoom < this->zoomMin)
{
this->zoom = MIN_ZOOM;
this->zoom = this->zoomMin;
}
if (this->zoom > MAX_ZOOM)
if (this->zoom > this->zoomMax)
{
this->zoom = MAX_ZOOM;
this->zoom = this->zoomMax;
}
for (ZoomListener* z : this->listener)
@ -260,7 +262,7 @@ void ZoomControl::zoomIn(double x, double y)
startZoomSequence(x, y);
this->zoom += zoomStep;
this->zoom += this->zoomStep;
this->zoomFitMode = false;
fireZoomChanged();
@ -273,13 +275,54 @@ void ZoomControl::zoomOut(double x, double y)
startZoomSequence(x, y);
this->zoom -= zoomStep;
this->zoom -= this->zoomStep;
this->zoomFitMode = false;
fireZoomChanged();
endZoomSequence();
}
double ZoomControl::getZoomStep()
{
return this->zoomStep;
}
void ZoomControl::setZoomStep(double zoomStep)
{
XOJ_CHECK_TYPE(ZoomControl);
this->zoomStep = zoomStep;
}
double ZoomControl::getZoomMax()
{
XOJ_CHECK_TYPE(ZoomControl);
return this->zoomMax;
}
void ZoomControl::setZoomMax(double zoomMax)
{
XOJ_CHECK_TYPE(ZoomControl);
this->zoomMax = zoomMax;
}
double ZoomControl::getZoomMin()
{
XOJ_CHECK_TYPE(ZoomControl);
return this->zoomMin;
}
void ZoomControl::setZoomMin(double zoomMin)
{
XOJ_CHECK_TYPE(ZoomControl);
this->zoomMin = zoomMin;
}
bool ZoomControl::onScrolledwindowMainScrollEvent(GdkEventScroll* event)
{
XOJ_CHECK_TYPE(ZoomControl);

@ -17,10 +17,9 @@
#include <gtk/gtk.h>
// Hardcode max and min zoom
// this should probably be user-adjustable in future
#define MAX_ZOOM 7
#define MIN_ZOOM 0.3
#define DEFAULT_ZOOM_MAX 7
#define DEFAULT_ZOOM_MIN 0.3
#define DEFAULT_ZOOM_STEP 0.04
class XournalView;
class XojPageView;
@ -87,6 +86,15 @@ public:
*/
Rectangle getVisibleRect();
double getZoomStep();
void setZoomStep(double zoomStep);
double getZoomMax();
void setZoomMax(double zoomMax);
double getZoomMin();
void setZoomMin(double zoomMin);
protected:
void fireZoomChanged();
void fireZoomRangeValueChanged();
@ -133,4 +141,8 @@ private:
* Base zoom on start, for relative zoom (Gesture)
*/
double zoomSequenceStart;
double zoomStep;
double zoomMax;
double zoomMin;
};

@ -158,11 +158,17 @@ GtkToolItem* ToolZoomSlider::newItem()
if (this->horizontal)
{
this->slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, MIN_ZOOM, MAX_ZOOM, 0.1);
this->slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,
zoom->getZoomMin(),
zoom->getZoomMax(),
zoom->getZoomStep());
}
else
{
this->slider = gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL, MIN_ZOOM, MAX_ZOOM, 0.1);
this->slider = gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,
zoom->getZoomMin(),
zoom->getZoomMax(),
zoom->getZoomStep());
gtk_range_set_inverted(GTK_RANGE(this->slider), true);
}

Loading…
Cancel
Save