Source Code (Use browser search to find items of interest.)

Class Index

killustrator'Canvas (./koffice/killustrator/share/Canvas.h:48)

class Canvas : public QWidget {
  Q_OBJECT
public:
  Canvas (GDocument* doc, float res, QwViewport* vp, QWidget* parent = 0, 
	  const char* name = 0);
  ~Canvas ();

  void setZoomFactor (float factor);
  float getZoomFactor () const;

  void setHorizHelplines (const vector<float>& lines);
  void setVertHelplines (const vector<float>& lines);
  const vector<float>& getHorizHelplines () const;
  const vector<float>& getVertHelplines () const;
  void alignToHelplines (bool flag);
  bool alignToHelplines ();
  void showHelplines (bool flag);
  bool showHelplines ();

  void showGrid (bool flag);
  bool showGrid () const { return gridIsOn; }

  void snapToGrid (bool flag);
  bool snapToGrid () const { return gridSnapIsOn; }

  void setGridDistance (float hdist, float vdist);
  float getHorizGridDistance () const { return hGridDistance; }
  float getVertGridDistance () const { return vGridDistance; }

  void snapPositionToGrid (float& x, float& y);
  Rect snapTranslatedBoxToGrid (const Rect& r);
  Rect snapScaledBoxToGrid (const Rect& r, int hmask);

  void setToolController (ToolController *tc);
  
  void setDocument (GDocument* doc);
  GDocument* getDocument ();
  
  void printDocument ();

  void zoomIn (int x, int y);
  void zoomOut ();

  void showBasePoints (bool flag = true);
  void setOutlineMode (bool flag);

  float scaleFactor () const;

  static void initZoomFactors (QArray<float>& factors);

protected:
  float snapXPositionToGrid (float pos);
  float snapYPositionToGrid (float pos);

  void saveGridProperties ();
  void readGridProperties ();

  void mousePressEvent (QMouseEvent *e);
  void mouseReleaseEvent (QMouseEvent *e);
  void mouseMoveEvent (QMouseEvent *e);
  void keyPressEvent (QKeyEvent *e);
  void paintEvent (QPaintEvent *e);
  void moveEvent (QMoveEvent *e);

  void addHorizHelpline (float pos);
  void addVertHelpline (float pos);

signals:
  void sizeChanged ();
  void gridStatusChanged ();
  void rightButtonAtObjectClicked (int x, int y, GObject* obj);
  void rightButtonAtSelectionClicked (int x, int y);
  void rightButtonClicked (int x, int y);

  void visibleAreaChanged (int x, int y);
  void zoomFactorChanged (float zoom);

  void mousePositionChanged (int x, int y);

public slots:
  void updateView ();
  void updateRegion (const Rect& r);
  void ensureVisibility (bool flag);
  void calculateSize ();
  void updateGridInfos ();

  void addHelpline (int x, int y, bool horizH);
  void drawTmpHelpline (int x, int y, bool horizH);

private slots:
  void retryUpdateRegion ();

private:
  void propagateMouseEvent (QMouseEvent *e);
  void propagateKeyEvent (QKeyEvent *e);
  void drawGrid (QPainter& p);
  void drawHelplines (QPainter& p);
  void redrawView (bool repaintFlag = true);

  QwViewport* viewport;
  QPixmap* pixmap;
  int width, height;
  float resolution;
  float zoomFactor;
  GDocument* document;
  ToolController* toolController;
  bool gridIsOn;
  bool gridSnapIsOn;
  bool dragging, ensureVisibilityFlag;
  float hGridDistance, vGridDistance;
  bool drawBasePoints;
  bool outlineMode;
  int pendingRedraws;
  Rect regionForUpdate, region;
  vector<float> horizHelplines, vertHelplines;
  bool helplinesAreOn, helplinesSnapIsOn;
  float tmpHorizHelpline, tmpVertHelpline;

  static QArray<float> zoomFactors;
};

killustrator'Canvas::Canvas() (./koffice/killustrator/share/Canvas.cc:49)

Canvas::Canvas (GDocument* doc, float res, QwViewport* vp, QWidget* parent,
		const char* name) : QWidget (parent, name) {
  document = doc;
  resolution = res;
  zoomFactor = 1.0;
  drawBasePoints = false;
  viewport = vp;

  connect (document, SIGNAL (changed ()), this, SLOT (updateView ()));
  connect (document, SIGNAL (changed (const Rect&)),
	   this, SLOT (updateRegion (const Rect&)));
  connect (document, SIGNAL (sizeChanged ()), this, SLOT (calculateSize ()));
  connect (&(document->handle ()), SIGNAL (handleChanged ()),
	   this, SLOT (updateView ()));
  connect (document, SIGNAL (gridChanged ()), this, SLOT (updateGridInfos ()));

  pixmap = 0L;

  helplinesAreOn = helplinesSnapIsOn = false;
  tmpHorizHelpline = tmpVertHelpline = -1;

  readGridProperties ();
  updateGridInfos ();

  calculateSize ();
  setFocusPolicy (StrongFocus);
  setMouseTracking (true);
  setBackgroundMode (NoBackground);

  dragging = false;
  ensureVisibilityFlag = false;
  outlineMode = false;
  pendingRedraws = 0;
}


killustrator'Canvas::~Canvas() (./koffice/killustrator/share/Canvas.cc:84)

Canvas::~Canvas () {
  if (pixmap != 0L)
    delete pixmap;
}


killustrator'Canvas::ensureVisibility() (./koffice/killustrator/share/Canvas.cc:89)

void Canvas::ensureVisibility (bool flag) {
  ensureVisibilityFlag = flag;
}


killustrator'Canvas::calculateSize() (./koffice/killustrator/share/Canvas.cc:93)

void Canvas::calculateSize () {
  width = (int) (document->getPaperWidth () * resolution *
		 zoomFactor / 72.0) + 4;
  height = (int) (document->getPaperHeight () * resolution *
		  zoomFactor / 72.0 + 4);
  resize (width, height);

  if (pixmap != 0L)
    delete pixmap;
  pixmap = 0L;
  if (zoomFactor < 3.0)
    pixmap = new QPixmap (width, height);
  viewport->recalculateChildPosition (this);
  updateView ();
  emit sizeChanged ();
}


killustrator'Canvas::initZoomFactors() (./koffice/killustrator/share/Canvas.cc:110)

void Canvas::initZoomFactors (QArray<float>& factors) {
  zoomFactors.duplicate (factors);
}



killustrator'Canvas::setZoomFactor() (./koffice/killustrator/share/Canvas.cc:115)

void Canvas::setZoomFactor (float factor) {
  zoomFactor = factor;
  calculateSize ();
  // recompute pixmaps of fill areas
  document->invalidateClipRegions ();
  updateView ();
  emit sizeChanged ();
  emit zoomFactorChanged (zoomFactor);
}


killustrator'Canvas::getZoomFactor() (./koffice/killustrator/share/Canvas.cc:125)

float Canvas::getZoomFactor () const {
  return zoomFactor;
}


killustrator'Canvas::showGrid() (./koffice/killustrator/share/Canvas.cc:129)

void Canvas::showGrid (bool flag) {
  if (gridIsOn != flag) {
    gridIsOn = flag;
    updateView ();
    emit gridStatusChanged ();
    saveGridProperties ();
  }
}


killustrator'Canvas::snapToGrid() (./koffice/killustrator/share/Canvas.cc:138)

void Canvas::snapToGrid (bool flag) {
  if (gridSnapIsOn != flag) {
    gridSnapIsOn = flag;
    saveGridProperties ();
    emit gridStatusChanged ();
    document->setGrid (hGridDistance, vGridDistance, gridSnapIsOn);
  }
}


killustrator'Canvas::setGridDistance() (./koffice/killustrator/share/Canvas.cc:147)

void Canvas::setGridDistance (float hdist, float vdist) {
  hGridDistance = hdist;
  vGridDistance = vdist;
  saveGridProperties ();
  document->setGrid (hGridDistance, vGridDistance, gridSnapIsOn);
}


killustrator'Canvas::snapTranslatedBoxToGrid() (./koffice/killustrator/share/Canvas.cc:154)

Rect Canvas::snapTranslatedBoxToGrid (const Rect& r) {
  float x1, x2, y1, y2;

  if (helplinesSnapIsOn || gridSnapIsOn) {
    x1 = snapXPositionToGrid (r.left ());
    x2 = snapXPositionToGrid (r.right ());
    y1 = snapYPositionToGrid (r.top ());
    y2 = snapYPositionToGrid (r.bottom ());

    float x = 0, y = 0;
    if (fabs (r.left () - x1) < fabs (r.right () - x2))
      x = x1;
    else
      x = x2 - r.width ();

    if (fabs (r.top () - y1) < fabs (r.bottom () - y2))
      y = y1;
    else
      y = y2 - r.height ();
    return Rect (x, y, r.width (), r.height ());
  }
  else
    return r;
}


killustrator'Canvas::snapScaledBoxToGrid() (./koffice/killustrator/share/Canvas.cc:179)

Rect Canvas::snapScaledBoxToGrid (const Rect& r, int hmask) {
  float x1, x2, y1, y2;

  if (helplinesSnapIsOn || gridSnapIsOn) {
    x1 = snapXPositionToGrid (r.left ());
    x2 = snapXPositionToGrid (r.right ());
    y1 = snapYPositionToGrid (r.top ());
    y2 = snapYPositionToGrid (r.bottom ());

    Rect retval (r);
    if (hmask & Handle::HPos_Left)
      retval.left (x1);
    if (hmask & Handle::HPos_Top)
      retval.top (y1);
    if (hmask & Handle::HPos_Right)
      retval.right (x2);
    if (hmask & Handle::HPos_Bottom)
      retval.bottom (y2);
    return retval;
  }
  else
    return r;
}


killustrator'Canvas::snapXPositionToGrid() (./koffice/killustrator/share/Canvas.cc:203)

float Canvas::snapXPositionToGrid (float pos) {
  bool snap = false;

  if (helplinesSnapIsOn) {
    // try to snap to help lines
    vector<float>::iterator i;
    for (i = vertHelplines.begin (); i != vertHelplines.end (); i++) {
      if (fabs (*i - pos) <= 10.0) {
	pos = *i;
	snap = true;
	break;
      }
    }
  }
  if (gridSnapIsOn && ! snap) {
    int n = (int) (pos / hGridDistance);
    float r = fmod (pos, hGridDistance);
    if (r > (hGridDistance / 2.0))
      n++;
    pos = hGridDistance * n;
  }
  return pos;
}


killustrator'Canvas::snapYPositionToGrid() (./koffice/killustrator/share/Canvas.cc:227)

float Canvas::snapYPositionToGrid (float pos) {
  bool snap = false;

  if (helplinesSnapIsOn) {
    // try to snap to help lines
    vector<float>::iterator i;
    for (i = horizHelplines.begin (); i != horizHelplines.end (); i++) {
      if (fabs (*i - pos) <= 10.0) {
	pos = *i;
	snap = true;
	break;
      }
    }
  }
  if (gridSnapIsOn && ! snap) {
    int n = (int) (pos / vGridDistance);
    float r = fmod (pos, vGridDistance);
    if (r > (vGridDistance / 2.0))
      n++;
    pos = vGridDistance * n;
  }
  return pos;
}


killustrator'Canvas::snapPositionToGrid() (./koffice/killustrator/share/Canvas.cc:251)

void Canvas::snapPositionToGrid (float& x, float& y) {
  bool snap = false;

  if (helplinesSnapIsOn) {
    // try to snap to help lines
    vector<float>::iterator i;
    for (i = horizHelplines.begin (); i != horizHelplines.end (); i++) {
      if (fabs (*i - y) <= 10.0) {
	y = *i;
	snap = true;
	break;
      }
    }
    for (i = vertHelplines.begin (); i != vertHelplines.end (); i++) {
      if (fabs (*i - x) <= 10.0) {
	x = *i;
	snap = true;
	break;
      }
    }
  }
  if (gridSnapIsOn && ! snap) {
    int n = (int) (x / hGridDistance);
    float r = fmod (x, hGridDistance);
    if (r > (hGridDistance / 2.0))
      n++;
    x = hGridDistance * n;

    n = (int) (y / vGridDistance);
    r = fmod (y, vGridDistance);
    if (r > (vGridDistance / 2.0))
      n++;
    y = vGridDistance * n;
  }
}


killustrator'Canvas::setToolController() (./koffice/killustrator/share/Canvas.cc:287)

void Canvas::setToolController (ToolController* tc) {
  toolController = tc;
}


killustrator'Canvas::propagateMouseEvent() (./koffice/killustrator/share/Canvas.cc:291)

void Canvas::propagateMouseEvent (QMouseEvent *e) {
  // transform position of the mouse pointer according to current
  // zoom factor
  QPoint new_pos (qRound (e->x () * 72 / (resolution * zoomFactor)) - 1,
		  qRound (e->y () * 72 / (resolution * zoomFactor)) - 1);
  QMouseEvent new_ev (e->type (), new_pos, e->button (), e->state ());

  emit mousePositionChanged (new_pos.x (), new_pos.y ());

  // ensure visibility
  if (ensureVisibilityFlag) {
    if (e->type () ==
#if QT_VERSION >= 199
	QEvent::MouseButtonPress
#else
	Event_MouseButtonPress
#endif
	&& e->button () == LeftButton)
      dragging = true;
    else if (e->type () ==
#if QT_VERSION >= 199
	     QEvent::MouseButtonRelease
#else
	     Event_MouseButtonRelease
#endif
	     &&
	     e->button () == LeftButton)
      dragging = false;
    else if (e->type () ==
#if QT_VERSION >= 199
	     QEvent::MouseMove
#else
	     Event_MouseMove
#endif
	     && dragging)
      viewport->ensureVisible (e->x (), e->y (), 10, 10);
  }

  if (e->button () == RightButton &&
      e->type () ==
#if QT_VERSION >= 199
      QEvent::MouseButtonPress
#else
      Event_MouseButtonPress
#endif
      && ! toolController->getActiveTool ()->consumesRMBEvents ()) {
    if (document->selectionIsEmpty ()) {
      GObject* obj = document->findContainingObject (new_pos.x (),
						     new_pos.y ());
      if (obj) {
	// pop up menu for the picked object
	emit rightButtonAtObjectClicked (e->x (), e->y (), obj);
      }
      else {
	emit rightButtonClicked (e->x (), e->y ());
      }
    }
    else {
      // pop up menu for the current selection
      emit rightButtonAtSelectionClicked (e->x (), e->y ());
    }
    return;
  }
  else
    if (toolController) {
      // the tool controller processes the event
      toolController->delegateEvent (&new_ev, document, this);
    }
}


killustrator'Canvas::propagateKeyEvent() (./koffice/killustrator/share/Canvas.cc:361)

void Canvas::propagateKeyEvent (QKeyEvent *e) {
  if (toolController) {
    toolController->delegateEvent (e, document, this);
  }
}


killustrator'Canvas::mousePressEvent() (./koffice/killustrator/share/Canvas.cc:367)

void Canvas::mousePressEvent (QMouseEvent* e) {
  propagateMouseEvent (e);
}


killustrator'Canvas::mouseReleaseEvent() (./koffice/killustrator/share/Canvas.cc:371)

void Canvas::mouseReleaseEvent (QMouseEvent* e) {
  propagateMouseEvent (e);
}


killustrator'Canvas::mouseMoveEvent() (./koffice/killustrator/share/Canvas.cc:375)

void Canvas::mouseMoveEvent (QMouseEvent* e) {
  propagateMouseEvent (e);
}


killustrator'Canvas::keyPressEvent() (./koffice/killustrator/share/Canvas.cc:379)

void Canvas::keyPressEvent (QKeyEvent* e) {
  propagateKeyEvent (e);
}


killustrator'Canvas::paintEvent() (./koffice/killustrator/share/Canvas.cc:383)

void Canvas::paintEvent (QPaintEvent* e) {
  const QRect& rect = e->rect ();
  if (pixmap != 0L)
    bitBlt (this, rect.x (), rect.y (), pixmap,
	    rect.x (), rect.y (), rect.width (), rect.height ());
  else
    // For large zoom levels there is no pixmap to copy. So we
    // have to redraw the whole document, but without to call
    // repaint !!!
    redrawView (false);
}


killustrator'Canvas::moveEvent() (./koffice/killustrator/share/Canvas.cc:395)

void Canvas::moveEvent (QMoveEvent *e) {
    emit visibleAreaChanged (e->pos ().x (), e->pos ().y ());
}


killustrator'Canvas::setDocument() (./koffice/killustrator/share/Canvas.cc:399)

void Canvas::setDocument (GDocument* doc) {
  document = doc;
  updateGridInfos ();
  connect (document, SIGNAL (changed ()), this, SLOT (updateView ()));
  connect (document, SIGNAL (gridChanged ()), this, SLOT (updateGridInfos ()));
}


killustrator'Canvas::getDocument() (./koffice/killustrator/share/Canvas.cc:406)

GDocument* Canvas::getDocument () {
  return document;
}


killustrator'Canvas::showBasePoints() (./koffice/killustrator/share/Canvas.cc:410)

void Canvas::showBasePoints (bool flag) {
  drawBasePoints = flag;
  updateView ();
}


killustrator'Canvas::setOutlineMode() (./koffice/killustrator/share/Canvas.cc:415)

void Canvas::setOutlineMode (bool flag) {
  if (outlineMode != flag) {
    outlineMode = flag;
    updateView ();
  }
}


killustrator'Canvas::scaleFactor() (./koffice/killustrator/share/Canvas.cc:422)

float Canvas::scaleFactor () const {
  return resolution * zoomFactor / 72.0;
}


killustrator'Canvas::updateView() (./koffice/killustrator/share/Canvas.cc:426)

void Canvas::updateView () {
  redrawView (true);
}


killustrator'Canvas::redrawView() (./koffice/killustrator/share/Canvas.cc:430)

void Canvas::redrawView (bool repaintFlag) {
  QPaintDevice *pdev;
  pendingRedraws = 0;

  QPainter p;
  float s = scaleFactor ();
  int w = document->getPaperWidth (), h = document->getPaperHeight ();

  // setup the painter
  pdev = (pixmap ? (QPaintDevice *) pixmap : (QPaintDevice *) this);
  p.begin (pdev);
  p.setBackgroundColor (white);
  if (pixmap)
    pixmap->fill (backgroundColor ());

  p.scale (s, s);

  // clear the canvas
  //  p.translate (1, 1);
  p.eraseRect (0, 0, w, h);

  p.setPen (black);
  p.drawRect (0, 0, w - 2, h - 2);
  p.setPen (QPen (darkGray, 2));
  p.moveTo (w - 1, 2);
  p.lineTo (w - 1, h - 1);
  p.lineTo (2, h - 1);
  p.setPen (black);


  // draw the grid
  if (gridIsOn)
    drawGrid (p);

  // draw the help lines
  if (helplinesAreOn)
    drawHelplines (p);

  // next the document contents
  document->drawContents (p, drawBasePoints, outlineMode);

  // and finally the handle
  if (! document->selectionIsEmpty ())
    document->handle ().draw (p);

  p.end ();
  // Don't repaint if called form paintEvent () !!
  if (repaintFlag)
    repaint ();
}


killustrator'Canvas::retryUpdateRegion() (./koffice/killustrator/share/Canvas.cc:481)

void Canvas::retryUpdateRegion () {
  updateRegion (region);
}


killustrator'Canvas::updateRegion() (./koffice/killustrator/share/Canvas.cc:485)

void Canvas::updateRegion (const Rect& reg) {
  if (pendingRedraws == 0 && document->selectionCount () > 1) {
    // we have to update a multiple selection, so we collect
    // the update regions and redraw it in one call
    pendingRedraws = document->selectionCount () - 1;
    regionForUpdate = reg;
    return;
  }

  Rect r = reg;

  if (pendingRedraws > 0) {
    regionForUpdate = regionForUpdate.unite (r);
    pendingRedraws--;
    if (pendingRedraws > 0)
      // not the last redraw call
      return;
    else
      r = regionForUpdate;
  }

  QPainter p;
  float s = scaleFactor ();

  // compute the clipping region
  QWMatrix m;
  m.scale (s, s);

  QRect clip = m.map (QRect (int (r.left ()), int (r.top ()),
			     int (r.width ()), int (r.height ())));

  QPaintDevice *pdev = (pixmap ? (QPaintDevice *) pixmap : (QPaintDevice *) this);
  if (pdev->paintingActive ()) {
    // this occurs only in KOffice, when a embedded part tries
    // to draw in our canvas
    region = reg;
    QTimer::singleShot (50, this, SLOT(retryUpdateRegion ()));
    return;
  }

  // setup the painter
  p.begin (pdev);
  p.setBackgroundColor (white);
  // setup the clip region
  if (clip.x () <= 1) clip.setX (1);
  if (clip.y () <= 1) clip.setY (1);

  int mw = (int) ((float) document->getPaperWidth () * s);
  int mh = (int) ((float) document->getPaperHeight () * s);

  if (clip.right () >= mw)
    clip.setRight (mw);
  if (clip.bottom () >= mh)
    clip.setBottom (mh);

  //  cout << "clip: " << clip.left () << ", " << clip.top ()
  //       << ", " << clip.width () << ", " << clip.height () << endl;

  p.setClipRect (clip);

  // clear the canvas
  p.scale (s, s);
  //  p.translate (1, 1);
  p.eraseRect (r.left (), r.top (), r.width (), r.height ());

  // draw the grid
  if (gridIsOn)
    drawGrid (p);

  // draw the help lines
  if (helplinesAreOn)
    drawHelplines (p);

  // next the document contents
  document->drawContentsInRegion (p, r, drawBasePoints, outlineMode);

  // and finally the handle
  if (! document->selectionIsEmpty ())
    document->handle ().draw (p);

  p.end ();
  repaint (clip, false);
}


killustrator'Canvas::drawHelplines() (./koffice/killustrator/share/Canvas.cc:569)

void Canvas::drawHelplines (QPainter& p) {
  int pw = document->getPaperWidth ();
  int ph = document->getPaperHeight ();
  unsigned int i;

  QPen pen (blue, 0, DashLine);

  p.save ();
  p.setPen (pen);
  for (i = 0; i < horizHelplines.size (); i++) {
    int hi = qRound (horizHelplines[i]);
    p.drawLine (0, hi, pw, hi);
  }
  for (i = 0; i < vertHelplines.size (); i++) {
    int vi = qRound (vertHelplines[i]);
    p.drawLine (vi, 0, vi, ph);
  }

  if (tmpHorizHelpline != -1) {
    int hi = qRound (tmpHorizHelpline);
    p.drawLine (0, hi, pw, hi);
  }

  if (tmpVertHelpline != -1) {
    int vi = qRound (tmpVertHelpline);
    p.drawLine (vi, 0, vi, ph);
  }

  p.restore ();
}


killustrator'Canvas::drawGrid() (./koffice/killustrator/share/Canvas.cc:600)

void Canvas::drawGrid (QPainter& p) {
  int pw = document->getPaperWidth ();
  int ph = document->getPaperHeight ();
  float h, v;

  QPen pen1 (blue, 0, DotLine);

  p.save ();
  p.setPen (pen1);
  for (h = hGridDistance; h < pw; h += hGridDistance) {
    int hi = qRound (h);
    p.drawLine (hi, 0, hi, ph);
  }
  for (v = vGridDistance; v < ph; v += vGridDistance) {
    int vi = qRound (v);
    p.drawLine (0, vi, pw, vi);
  }
  p.restore ();
}


killustrator'Canvas::printDocument() (./koffice/killustrator/share/Canvas.cc:620)

void Canvas::printDocument () {
  QPrinter printer;
  printer.setDocName (document->fileName ());
  printer.setCreator ("KIllustrator");
  switch (document->pageLayout ().format) {
  case PG_DIN_A4:
    printer.setPageSize (QPrinter::A4);
    break;
  case PG_DIN_A5:
    printer.setPageSize (QPrinter::B5);
    break;
  case PG_US_LETTER:
    printer.setPageSize (QPrinter::Letter);
    break;
  case PG_US_LEGAL:
    printer.setPageSize (QPrinter::Legal);
    break;
  default:
    break;
  }
  printer.setOrientation (document->pageLayout ().orientation == PG_PORTRAIT ?
			  QPrinter::Portrait : QPrinter::Landscape);
  if (printer.setup (this)) {
    QPainter paint;
    paint.begin (&printer);
    paint.setClipping (false);
    document->drawContents (paint);
    paint.end ();
  }
}


killustrator'Canvas::zoomIn() (./koffice/killustrator/share/Canvas.cc:651)

void Canvas::zoomIn (int x, int y) {
  int pos = zoomFactors.find (getZoomFactor ());
  assert (pos != -1);
  if (pos < (int) zoomFactors.size () - 1) {
    setZoomFactor (zoomFactors[pos + 1]);
    viewport->centerOn (x, y);
    emit zoomFactorChanged (zoomFactors[pos + 1]);
  }
}


killustrator'Canvas::zoomOut() (./koffice/killustrator/share/Canvas.cc:661)

void Canvas::zoomOut () {
  int pos = zoomFactors.find (getZoomFactor ());
  assert (pos != -1);
  if (pos > 0)
    setZoomFactor (zoomFactors[pos - 1]);
}


killustrator'Canvas::readGridProperties() (./koffice/killustrator/share/Canvas.cc:668)

void Canvas::readGridProperties () {
#if NEWKDE
  KConfig* config = kapp->config ();
#else
  KConfig* config = kapp->getConfig ();
#endif
  QString oldgroup = config->group ();

  config->setGroup ("Grid");

  vGridDistance = (float) config->readDoubleNumEntry ("vGridDistance", 50.0);
  hGridDistance = (float) config->readDoubleNumEntry ("hGridDistance", 50.0);
  gridIsOn = config->readBoolEntry ("showGrid", false);
  gridSnapIsOn = config->readBoolEntry ("snapTopGrid", false);

  config->setGroup ("Helplines");
  helplinesAreOn = config->readBoolEntry ("showHelplines");
  helplinesSnapIsOn = config->readBoolEntry ("snapTopHelplines");

  config->setGroup (oldgroup);
}


killustrator'Canvas::saveGridProperties() (./koffice/killustrator/share/Canvas.cc:690)

void Canvas::saveGridProperties () {
#if NEWKDE
  KConfig* config = kapp->config ();
#else
  KConfig* config = kapp->getConfig ();
#endif
  QString oldgroup = config->group ();

  config->setGroup ("Grid");

  config->writeEntry ("vGridDistance", (double) vGridDistance);
  config->writeEntry ("hGridDistance", (double) hGridDistance);
  config->writeEntry ("showGrid", gridIsOn);
  config->writeEntry ("snapTopGrid", gridSnapIsOn);

  config->setGroup ("Helplines");
  config->writeEntry ("showHelplines", helplinesAreOn);
  config->writeEntry ("snapTopHelplines", helplinesSnapIsOn);

  config->setGroup (oldgroup);
  config->sync ();
}


killustrator'Canvas::drawTmpHelpline() (./koffice/killustrator/share/Canvas.cc:713)

void Canvas::drawTmpHelpline (int x, int y, bool horizH) {
  float pos = -1;
  // convert into document coordinates
  // and add helpline
  if (horizH) {
    pos = (float) y / zoomFactor - this->y ();
    tmpHorizHelpline = pos;
  }
  else {
    pos = (float) x / zoomFactor - this->x ();
    tmpVertHelpline = pos;
  }
  if (helplinesAreOn)
    updateView ();
}


killustrator'Canvas::addHelpline() (./koffice/killustrator/share/Canvas.cc:729)

void Canvas::addHelpline (int x, int y, bool horizH) {
  float pos = -1;
  tmpHorizHelpline = tmpVertHelpline = -1;
  // convert into document coordinates
  // and add helpline
  if (horizH) {
    pos = (float) y / zoomFactor - this->y ();
    addHorizHelpline (pos);
  }
  else {
    pos = (float) x / zoomFactor - this->x ();
    addVertHelpline (pos);
  }
}


killustrator'Canvas::addHorizHelpline() (./koffice/killustrator/share/Canvas.cc:744)

void Canvas::addHorizHelpline  (float pos) {
  horizHelplines.push_back (pos);
  if (helplinesAreOn)
    updateView ();
  document->setHelplines (horizHelplines, vertHelplines, helplinesSnapIsOn);
}


killustrator'Canvas::addVertHelpline() (./koffice/killustrator/share/Canvas.cc:751)

void Canvas::addVertHelpline  (float pos) {
  vertHelplines.push_back (pos);
  if (helplinesAreOn)
    updateView ();
  document->setHelplines (horizHelplines, vertHelplines, helplinesSnapIsOn);
}


killustrator'Canvas::setHorizHelplines() (./koffice/killustrator/share/Canvas.cc:758)

void Canvas::setHorizHelplines (const vector<float>& lines) {
  horizHelplines = lines;
  if (helplinesAreOn)
    updateView ();
  document->setHelplines (horizHelplines, vertHelplines, helplinesSnapIsOn);
}


killustrator'Canvas::setVertHelplines() (./koffice/killustrator/share/Canvas.cc:765)

void Canvas::setVertHelplines (const vector<float>& lines) {
  vertHelplines = lines;
  if (helplinesAreOn)
    updateView ();
  document->setHelplines (horizHelplines, vertHelplines, helplinesSnapIsOn);
}


killustrator'Canvas::getHorizHelplines() (./koffice/killustrator/share/Canvas.cc:772)

const vector<float>& Canvas::getHorizHelplines () const {
  return horizHelplines;
}


killustrator'Canvas::getVertHelplines() (./koffice/killustrator/share/Canvas.cc:776)

const vector<float>& Canvas::getVertHelplines () const {
  return vertHelplines;
}


killustrator'Canvas::alignToHelplines() (./koffice/killustrator/share/Canvas.cc:780)

void Canvas::alignToHelplines (bool flag) {
  helplinesSnapIsOn = flag;
  emit gridStatusChanged ();
  document->setHelplines (horizHelplines, vertHelplines, helplinesSnapIsOn);
}


killustrator'Canvas::alignToHelplines() (./koffice/killustrator/share/Canvas.cc:786)

bool Canvas::alignToHelplines () {
  return helplinesSnapIsOn;
}


killustrator'Canvas::showHelplines() (./koffice/killustrator/share/Canvas.cc:790)

void Canvas::showHelplines (bool flag) {
  if (helplinesAreOn != flag) {
    helplinesAreOn = flag;
    updateView ();
    emit gridStatusChanged ();
    saveGridProperties ();
  }
}


killustrator'Canvas::showHelplines() (./koffice/killustrator/share/Canvas.cc:799)

bool Canvas::showHelplines () {
  return helplinesAreOn;
}


killustrator'Canvas::updateGridInfos() (./koffice/killustrator/share/Canvas.cc:803)

void Canvas::updateGridInfos () {
  document->getGrid (hGridDistance, vGridDistance, gridSnapIsOn);
  document->getHelplines (horizHelplines, vertHelplines, helplinesSnapIsOn);
  saveGridProperties ();
  emit gridStatusChanged ();
}